19 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_MOBILIZE_REWRITE_FILTER_H_
20 #define NET_INSTAWEB_REWRITER_PUBLIC_MOBILIZE_REWRITE_FILTER_H_
24 #include "net/instaweb/htmlparse/public/empty_html_filter.h"
25 #include "net/instaweb/htmlparse/public/html_name.h"
27 #include "pagespeed/kernel/base/string_util.h"
29 namespace net_instaweb {
31 class HtmlCharactersNode;
66 static const MobileRole* FromString(
const StringPiece& mobile_role);
67 static Level LevelFromString(
const StringPiece& mobile_role);
68 static const char* StringFromLevel(
Level level) {
115 static const char kPagesMobilized[];
116 static const char kKeeperBlocks[];
117 static const char kHeaderBlocks[];
118 static const char kNavigationalBlocks[];
119 static const char kContentBlocks[];
120 static const char kMarginalBlocks[];
121 static const char kDeletedElements[];
126 static void InitStats(Statistics* statistics);
128 virtual void StartDocument();
129 virtual void EndDocument();
130 virtual void StartElement(HtmlElement* element);
131 virtual void EndElement(HtmlElement* element);
132 virtual void Characters(HtmlCharactersNode* characters);
133 virtual const char* Name()
const {
return "MobilizeRewrite"; }
136 void HandleStartTagInBody(HtmlElement* element);
137 void HandleEndTagInBody(HtmlElement* element);
138 void AddStyleAndViewport(HtmlElement* element);
139 void AddReorderContainers(HtmlElement* element);
140 void RemoveReorderContainers();
141 bool IsReorderContainer(HtmlElement* element);
145 bool InImportantElement() {
146 return (important_element_depth_ > 0);
149 bool CheckForKeyword(
150 const HtmlName::Keyword* sorted_list,
int len, HtmlName::Keyword keyword);
154 std::vector<HtmlName::Keyword> nav_keyword_stack_;
155 std::vector<HtmlElement*> mobile_role_containers_;
156 int important_element_depth_;
157 int body_element_depth_;
158 int nav_element_depth_;
159 bool reached_reorder_containers_;
161 bool added_containers_;
165 Variable* num_pages_mobilized_;
167 Variable* num_keeper_blocks_;
168 Variable* num_header_blocks_;
169 Variable* num_navigational_blocks_;
170 Variable* num_content_blocks_;
171 Variable* num_marginal_blocks_;
173 Variable* num_elements_deleted_;
180 const char* style_css_;
A mobile role and its associated HTML attribute value.
Definition: mobilize_rewrite_filter.h:38
Definition: mobilize_rewrite_filter.h:42
const char *const value
Set to a static string in cc.
Definition: mobilize_rewrite_filter.h:73
Definition: mobilize_rewrite_filter.h:57
The page header, such as.
Definition: mobilize_rewrite_filter.h:44
Level
Definition: mobilize_rewrite_filter.h:39
Definition: mobilize_rewrite_filter.h:54
Definition: rewrite_driver.h:98
Main content of the page.
Definition: mobilize_rewrite_filter.h:50
Definition: mobilize_rewrite_filter.h:113
friend class MobilizeRewriteFilterTest
Used for overriding default behavior in testing.
Definition: mobilize_rewrite_filter.h:176
Definition: mobilize_rewrite_filter.h:48