18 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_SUPPRESS_PREHEAD_FILTER_H_
19 #define NET_INSTAWEB_REWRITER_PUBLIC_SUPPRESS_PREHEAD_FILTER_H_
21 #include "pagespeed/kernel/base/basictypes.h"
22 #include "pagespeed/kernel/base/scoped_ptr.h"
23 #include "pagespeed/kernel/base/split_writer.h"
24 #include "pagespeed/kernel/base/string.h"
25 #include "pagespeed/kernel/base/string_writer.h"
26 #include "pagespeed/kernel/base/writer.h"
27 #include "pagespeed/kernel/html/html_element.h"
28 #include "pagespeed/kernel/html/html_filter.h"
29 #include "pagespeed/kernel/html/html_writer_filter.h"
30 #include "pagespeed/kernel/http/response_headers.h"
32 namespace net_instaweb {
46 virtual void StartDocument();
48 virtual void StartElement(HtmlElement* element);
50 virtual void EndElement(HtmlElement* element);
52 virtual void EndDocument();
54 ScriptUsage GetScriptUsage()
const override {
return kWillInjectScripts; }
61 friend class SuppressPreheadFilterTest;
62 void SendCookies(HtmlElement* element);
64 void PreHeadDone(HtmlElement* element);
66 static void UpdateFetchLatencyInFlushEarlyProto(int64 latency,
70 bool ExtractAndUpdateXUACompatible(HtmlElement* element);
72 bool seen_start_html_;
73 bool seen_first_head_;
75 bool has_x_ua_compatible_;
77 HtmlElement* noscript_element_;
79 GoogleString pre_head_;
80 GoogleString charset_;
82 Writer* original_writer_;
83 StringWriter pre_head_writer_;
84 scoped_ptr<SplitWriter> pre_head_and_response_writer_;
86 scoped_ptr<ResponseHeaders> response_headers_;
Definition: rewrite_driver.h:98
Definition: suppress_prehead_filter.h:42