30 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_CRITICAL_CSS_FILTER_H_
31 #define NET_INSTAWEB_REWRITER_PUBLIC_CRITICAL_CSS_FILTER_H_
36 #include "net/instaweb/rewriter/critical_css.pb.h"
39 #include "pagespeed/kernel/base/basictypes.h"
40 #include "pagespeed/kernel/base/string.h"
42 namespace net_instaweb {
44 class CriticalCssFinder;
45 class CriticalCssResult;
46 class CriticalCssResult_LinkRules;
47 class HtmlCharactersNode;
57 static const char kAddStylesScript[];
58 static const char kStatsScriptTemplate[];
63 virtual void EndDocument();
64 virtual void StartElementImpl(HtmlElement* element);
65 virtual void EndElementImpl(HtmlElement* element);
66 virtual void Characters(HtmlCharactersNode* characters);
68 virtual const char* Name()
const {
return "CriticalCss"; }
72 GoogleString DecodeUrl(
const GoogleString& url);
77 const CriticalCssResult_LinkRules* GetLinkRules(
78 const GoogleString& decoded_url);
82 void LogRewrite(
int status);
87 CriticalCssResult* critical_css_result_;
90 typedef std::map<GoogleString, int> UrlIndexes;
91 UrlIndexes url_indexes_;
93 bool has_critical_css_;
94 bool is_move_link_script_added_;
97 class CssStyleElement;
98 typedef std::vector<CssElement*> CssElementVector;
99 CssElementVector css_elements_;
100 CssStyleElement* current_style_element_;
106 int total_critical_size_;
107 int total_original_size_;
108 int repeated_style_blocks_size_;
109 int num_repeated_style_blocks_;
111 int num_replaced_links_;
Definition: common_filter.h:48
Definition: critical_css_filter.h:51
Finds critical CSS rules (i.e. CSS needed for the initial page load).
Definition: critical_css_finder.h:33
Definition: rewrite_driver.h:98
virtual void StartDocumentImpl()
virtual void Characters(HtmlCharactersNode *characters)
virtual void DetermineEnabled(GoogleString *disabled_reason)
Overridden from CommonFilter: