19 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_MOBILIZE_REWRITE_FILTER_H_
20 #define NET_INSTAWEB_REWRITER_PUBLIC_MOBILIZE_REWRITE_FILTER_H_
24 #include "pagespeed/kernel/base/basictypes.h"
25 #include "pagespeed/kernel/base/string.h"
26 #include "pagespeed/kernel/base/string_util.h"
27 #include "pagespeed/kernel/html/empty_html_filter.h"
28 #include "pagespeed/kernel/html/html_name.h"
30 namespace net_instaweb {
32 class HtmlCharactersNode;
67 static const MobileRole* FromString(
const StringPiece& mobile_role);
68 static Level LevelFromString(
const StringPiece& mobile_role);
69 static const char* StringFromLevel(
Level level) {
116 static const char kPagesMobilized[];
117 static const char kKeeperBlocks[];
118 static const char kHeaderBlocks[];
119 static const char kNavigationalBlocks[];
120 static const char kContentBlocks[];
121 static const char kMarginalBlocks[];
122 static const char kDeletedElements[];
127 static const int kNumKeeperTags;
132 static void InitStats(Statistics* statistics);
134 virtual void StartDocument();
135 virtual void EndDocument();
136 virtual void StartElement(HtmlElement* element);
137 virtual void EndElement(HtmlElement* element);
138 virtual void Characters(HtmlCharactersNode* characters);
139 virtual const char* Name()
const {
return "MobilizeRewrite"; }
142 void HandleStartTagInBody(HtmlElement* element);
143 void HandleEndTagInBody(HtmlElement* element);
144 void AddStyleAndViewport(HtmlElement* element);
145 void AddReorderContainers(HtmlElement* element);
146 void RemoveReorderContainers();
147 bool IsReorderContainer(HtmlElement* element);
151 bool InImportantElement() {
152 return (!element_roles_stack_.empty());
155 bool CheckForKeyword(
156 const HtmlName::Keyword* sorted_list,
int len, HtmlName::Keyword keyword);
159 RewriteDriver* driver_;
160 std::vector<MobileRole::Level> element_roles_stack_;
161 std::vector<HtmlName::Keyword> nav_keyword_stack_;
162 std::vector<HtmlElement*> mobile_role_containers_;
163 int body_element_depth_;
164 int nav_element_depth_;
165 bool reached_reorder_containers_;
166 bool found_viewport_;
168 bool added_containers_;
171 bool use_cxx_layout_;
175 GoogleString static_file_prefix_;
179 Variable* num_pages_mobilized_;
181 Variable* num_keeper_blocks_;
182 Variable* num_header_blocks_;
183 Variable* num_navigational_blocks_;
184 Variable* num_content_blocks_;
185 Variable* num_marginal_blocks_;
187 Variable* num_elements_deleted_;
194 const char* style_css_;
static const HtmlName::Keyword kKeeperTags[]
Definition: mobilize_rewrite_filter.h:126
A mobile role and its associated HTML attribute value.
Definition: mobilize_rewrite_filter.h:39
Definition: mobilize_rewrite_filter.h:43
const char *const value
Set to a static string in cc.
Definition: mobilize_rewrite_filter.h:74
Definition: mobilize_rewrite_filter.h:58
The page header, such as.
Definition: mobilize_rewrite_filter.h:45
Level
Definition: mobilize_rewrite_filter.h:40
Definition: mobilize_rewrite_filter.h:55
Definition: rewrite_driver.h:98
Main content of the page.
Definition: mobilize_rewrite_filter.h:51
Definition: mobilize_rewrite_filter.h:114
friend class MobilizeRewriteFilterTest
Used for overriding default behavior in testing.
Definition: mobilize_rewrite_filter.h:190
Definition: mobilize_rewrite_filter.h:49