23 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_JS_COMBINE_FILTER_H_
24 #define NET_INSTAWEB_REWRITER_PUBLIC_JS_COMBINE_FILTER_H_
26 #include "net/instaweb/htmlparse/public/html_element.h"
33 #include "net/instaweb/util/public/url_multipart_encoder.h"
34 #include "pagespeed/kernel/base/string_util.h"
36 namespace pagespeed {
namespace js {
struct JsTokenizerPatterns; } }
38 namespace net_instaweb {
40 class HtmlCharactersNode;
41 class HtmlIEDirectiveNode;
46 class UrlSegmentEncoder;
77 static void InitStats(Statistics* statistics);
78 virtual const char* id()
const {
79 return RewriteOptions::kJavascriptCombinerId;
91 virtual void StartElementImpl(HtmlElement* element);
92 virtual void EndElementImpl(HtmlElement* element);
93 virtual void Characters(HtmlCharactersNode* characters);
96 virtual void IEDirective(HtmlIEDirectiveNode* directive);
97 virtual const char* Name()
const {
return "JsCombine"; }
99 virtual const UrlSegmentEncoder*
encoder()
const {
107 friend class JsCombineFilterTest;
109 void ConsiderJsForCombination(HtmlElement* element,
110 HtmlElement::Attribute* src);
113 static GoogleString VarName(
const ServerContext* server_context,
114 const GoogleString& url);
116 void NextCombination();
118 Context* MakeContext();
120 JsCombiner* combiner()
const;
124 HtmlElement* current_js_script_;
126 scoped_ptr<Context> context_;
127 UrlMultipartEncoder encoder_;
Definition: js_combine_filter.h:67
virtual void StartDocumentImpl()
RewriteFilter overrides — HTML parsing event handlers.
virtual RewriteContext * MakeRewriteContext()
virtual void DetermineEnabled(GoogleString *disabled_reason)
virtual void Characters(HtmlCharactersNode *characters)
static void InitStats(Statistics *statistics)
Registers the provided statistics variable names with 'statistics'.
virtual const UrlSegmentEncoder * encoder() const
Definition: js_combine_filter.h:99
Definition: rewrite_filter.h:37
Definition: rewrite_driver.h:98
JsCombineFilter(RewriteDriver *rewrite_driver)
Definition: server_context.h:100
static const char kJsFileCountReduction[]
statistics variable name
Definition: js_combine_filter.h:69
static bool IsLikelyStrictMode(const pagespeed::js::JsTokenizerPatterns *jstp, StringPiece input)