25 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_CRITICAL_SELECTOR_FILTER_H_
26 #define NET_INSTAWEB_REWRITER_PUBLIC_CRITICAL_SELECTOR_FILTER_H_
30 #include "net/instaweb/http/public/semantic_type.h"
44 namespace net_instaweb {
46 class HtmlCharactersNode;
51 static const char kAddStylesFunction[];
52 static const char kAddStylesInvocation[];
53 static const char kApplyFlushEarlyCss[];
54 static const char kInvokeFlushEarlyCssTemplate[];
55 static const char kMoveScriptId[];
56 static const char kNoscriptStylesClass[];
61 virtual const char* Name()
const {
return "CriticalSelectorFilter"; }
62 virtual const char* id()
const {
return "cl"; }
71 return driver()->
options()->HasInlineUnauthorizedResourceType(
72 semantic_type::kStylesheet) ?
73 RewriteDriver::kInlineUnauthorizedResources :
74 RewriteDriver::kInlineOnlyAuthorizedResources;
86 virtual void Summarize(Css::Stylesheet* stylesheet,
87 GoogleString* out)
const;
90 HtmlCharactersNode* char_node,
91 bool* is_element_deleted);
94 HtmlCharactersNode* char_node,
95 bool* is_element_deleted);
103 virtual void EndDocument();
104 virtual void RenderDone();
111 class CssStyleElement;
112 typedef std::vector<CssElement*> CssElementVector;
114 void RememberFullCss(
int pos,
115 HtmlElement* element,
116 HtmlCharactersNode* char_node);
118 bool IsCssFlushedEarly(
const GoogleString& url)
const;
119 void ApplyCssFlushedEarly(HtmlElement* element,
120 const GoogleString& style_id,
126 StringSet critical_selectors_;
129 GoogleString cache_key_suffix_;
134 CssElementVector css_elements_;
137 bool saw_end_document_;
143 bool is_flush_script_added_;
virtual void RenderSummary(int pos, HtmlElement *element, HtmlCharactersNode *char_node, bool *is_element_deleted)
virtual void WillNotRenderSummary(int pos, HtmlElement *element, HtmlCharactersNode *char_node, bool *is_element_deleted)
Definition: critical_selector_filter.h:49
virtual RewriteDriver::InlineAuthorizationPolicy AllowUnauthorizedDomain() const
Definition: critical_selector_filter.h:69
virtual bool IntendedForInlining() const
Selectors are inlined into the html.
Definition: critical_selector_filter.h:78
virtual void Summarize(Css::Stylesheet *stylesheet, GoogleString *out) const
Definition: rewrite_driver.h:98
InlineAuthorizationPolicy
See CreateInputResource.
Definition: rewrite_driver.h:135
virtual void StartDocumentImpl()
Parser callbacks.
virtual void DetermineEnabled(GoogleString *disabled_reason)
Filter control API.
const RewriteOptions * options() const
Return the options used for this RewriteDriver.
Definition: rewrite_driver.h:478
virtual GoogleString CacheKeySuffix() const
Definition: css_summarizer_base.h:52