19 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_JS_INLINE_FILTER_H_
20 #define NET_INSTAWEB_REWRITER_PUBLIC_JS_INLINE_FILTER_H_
29 #include "pagespeed/kernel/base/basictypes.h"
30 #include "pagespeed/kernel/base/string.h"
31 #include "pagespeed/kernel/base/string_util.h"
32 #include "pagespeed/kernel/html/html_element.h"
33 #include "pagespeed/kernel/html/html_filter.h"
34 #include "pagespeed/kernel/html/html_node.h"
35 #include "pagespeed/kernel/http/semantic_type.h"
37 namespace net_instaweb {
44 static const char kNumJsInlined[];
49 virtual void EndDocument();
50 virtual void StartElementImpl(HtmlElement* element);
51 virtual void EndElementImpl(HtmlElement* element);
52 virtual void Characters(HtmlCharactersNode* characters);
53 virtual const char* Name()
const {
return "InlineJs"; }
59 return driver()->
options()->HasInlineUnauthorizedResourceType(
60 semantic_type::kScript) ?
61 RewriteDriver::kInlineUnauthorizedResources :
62 RewriteDriver::kInlineOnlyAuthorizedResources;
65 ScriptUsage GetScriptUsage()
const override {
return kWillInjectScripts; }
67 static void InitStats(Statistics* statistics);
73 bool ShouldInline(
const ResourcePtr& resource, GoogleString* reason)
const;
74 void RenderInline(
const ResourcePtr& resource,
const StringPiece& text,
75 HtmlElement* element);
77 const size_t size_threshold_bytes_;
78 ScriptTagScanner script_tag_scanner_;
87 Variable* num_js_inlined_;
Definition: common_filter.h:47
virtual void Characters(HtmlCharactersNode *characters)
Definition: rewrite_driver.h:98
Inline small Javascript files.
Definition: js_inline_filter.h:42
virtual void StartDocumentImpl()
virtual bool IntendedForInlining() const
Definition: js_inline_filter.h:64
InlineAuthorizationPolicy
See CreateInputResource.
Definition: rewrite_driver.h:135
const RewriteOptions * options() const
Return the options used for this RewriteDriver.
Definition: rewrite_driver.h:490
virtual RewriteDriver::InlineAuthorizationPolicy AllowUnauthorizedDomain() const
Definition: js_inline_filter.h:57