15 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_REQUEST_PROPERTIES_H_
16 #define NET_INSTAWEB_REWRITER_PUBLIC_REQUEST_PROPERTIES_H_
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"
27 namespace net_instaweb {
29 class DownstreamCachingDirectives;
30 class AbstractLogRecord;
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;
60 bool SupportsWebpRewrittenUrls()
const;
61 bool SupportsWebpLosslessAlpha()
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;
73 const std::vector<int>* webp,
const std::vector<int>* jpeg);
78 static int GetPreferredImageQualityCount();
80 void LogDeviceInfo(AbstractLogRecord* log_record,
81 bool enable_aggressive_rewriters_for_mobile);
84 friend class ImageRewriteTest;
85 FRIEND_TEST(ImageRewriteTest, SquashImagesForMobileScreen);
86 FRIEND_TEST(RequestPropertiesTest, GetScreenGroupIndex);
88 void SetScreenResolution(
int width,
int height)
const;
90 scoped_ptr<DeviceProperties> device_properties_;
91 scoped_ptr<DownstreamCachingDirectives> downstream_caching_directives_;
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_;
bool SupportsWebpInPlace() const
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