Page Speed Optimization Libraries  1.9.32.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
request_properties.h
1 // Copyright 2013 Google Inc. All Rights Reserved.
14 
15 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_REQUEST_PROPERTIES_H_
16 #define NET_INSTAWEB_REWRITER_PUBLIC_REQUEST_PROPERTIES_H_
17 
18 #include <vector>
19 
20 #include "net/instaweb/rewriter/public/device_properties.h"
21 #include "pagespeed/kernel/base/basictypes.h"
22 #include "pagespeed/kernel/base/gtest_prod.h"
23 #include "pagespeed/kernel/base/scoped_ptr.h"
24 #include "pagespeed/kernel/base/string_util.h"
25 #include "pagespeed/kernel/http/user_agent_matcher.h"
26 
27 namespace net_instaweb {
28 
29 class DownstreamCachingDirectives;
30 class AbstractLogRecord;
31 class RequestHeaders;
32 
40  public:
41  explicit RequestProperties(UserAgentMatcher* matcher);
42  virtual ~RequestProperties();
43 
45  void SetUserAgent(const StringPiece& user_agent_string);
48  void ParseRequestHeaders(const RequestHeaders& request_headers);
49 
50  bool SupportsImageInlining() const;
51  bool SupportsLazyloadImages() const;
52  bool SupportsCriticalCss() const;
53  bool SupportsCriticalCssBeacon() const;
54  bool SupportsCriticalImagesBeacon() const;
55  bool SupportsJsDefer(bool enable_mobile) const;
59  bool SupportsWebpInPlace() const;
60  bool SupportsWebpRewrittenUrls() const;
61  bool SupportsWebpLosslessAlpha() const;
62  bool IsBot() const;
63  bool SupportsSplitHtml(bool enable_mobile) const;
64  bool CanPreloadResources() const;
65  bool GetScreenResolution(int* width, int* height) const;
66  UserAgentMatcher::DeviceType GetDeviceType() const;
67  bool IsMobile() const;
68  bool ForbidWebpInlining() const;
69 
73  const std::vector<int>* webp, const std::vector<int>* jpeg);
76  DeviceProperties::ImageQualityPreference preference, int* webp, int* jpeg)
77  const;
78  static int GetPreferredImageQualityCount();
79 
80  void LogDeviceInfo(AbstractLogRecord* log_record,
81  bool enable_aggressive_rewriters_for_mobile);
82 
83  private:
84  friend class ImageRewriteTest;
85  FRIEND_TEST(ImageRewriteTest, SquashImagesForMobileScreen);
86  FRIEND_TEST(RequestPropertiesTest, GetScreenGroupIndex);
87 
88  void SetScreenResolution(int width, int height) const;
89 
90  scoped_ptr<DeviceProperties> device_properties_;
91  scoped_ptr<DownstreamCachingDirectives> downstream_caching_directives_;
92 
93  mutable LazyBool supports_image_inlining_;
94  mutable LazyBool supports_js_defer_;
95  mutable LazyBool supports_lazyload_images_;
96  mutable LazyBool supports_webp_in_place_;
97  mutable LazyBool supports_webp_rewritten_urls_;
98  mutable LazyBool supports_webp_lossless_alpha_;
99 
100  DISALLOW_COPY_AND_ASSIGN(RequestProperties);
101 };
102 
103 }
104 
105 #endif
ImageQualityPreference
Definition: device_properties.h:67
void SetPreferredImageQualities(const std::vector< int > *webp, const std::vector< int > *jpeg)
void SetUserAgent(const StringPiece &user_agent_string)
Sets the user agent string on the underlying DeviceProperties object.
void ParseRequestHeaders(const RequestHeaders &request_headers)
bool GetPreferredImageQualities(DeviceProperties::ImageQualityPreference preference, int *webp, int *jpeg) const
Returns true iff WebP and Jpeg image quality are set for the preference.
Definition: request_properties.h:39