Page Speed Optimization Libraries  1.9.32.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fake_filter.h
Go to the documentation of this file.
1 /*
2  * Copyright 2013 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http:///www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
18 
19 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_FAKE_FILTER_H_
20 #define NET_INSTAWEB_REWRITER_PUBLIC_FAKE_FILTER_H_
21 
22 #include "net/instaweb/http/public/semantic_type.h"
30 #include "pagespeed/kernel/base/basictypes.h"
31 
32 namespace net_instaweb {
33 
34 class HtmlElement;
35 class ResourceContext;
36 class RewriteContext;
37 class RewriteDriver;
38 struct ContentType;
39 
44 class FakeFilter : public RewriteFilter {
45  public:
46  class Context : public SingleRewriteContext {
47  public:
49  ResourceContext* resource_context)
50  : SingleRewriteContext(driver, parent, resource_context),
51  filter_(filter) {}
52  virtual ~Context();
53 
54  void RewriteSingle(const ResourcePtr& input,
55  const OutputResourcePtr& output);
56 
57  virtual void DoRewriteSingle(
58  const ResourcePtr input, OutputResourcePtr output);
59  GoogleString UserAgentCacheKey(
60  const ResourceContext* resource_context) const;
61 
62  virtual const char* id() const { return filter_->id(); }
63  virtual OutputResourceKind kind() const { return filter_->kind(); }
64 
65  private:
66  FakeFilter* filter_;
67  DISALLOW_COPY_AND_ASSIGN(Context);
68  };
69 
70  FakeFilter(const char* id, RewriteDriver* rewrite_driver,
71  semantic_type::Category category)
72  : RewriteFilter(rewrite_driver),
73  id_(id),
74  exceed_deadline_(false),
75  enabled_(true),
76  num_rewrites_(0),
77  output_content_type_(NULL),
78  num_calls_to_encode_user_agent_(0),
79  category_(category) {}
80 
81  virtual ~FakeFilter();
82 
83  virtual void StartDocumentImpl() {}
84  virtual void EndElementImpl(HtmlElement* element) {}
85  virtual void StartElementImpl(HtmlElement* element);
87  return MakeFakeContext(driver(), NULL , NULL);
88  }
90  const ResourceSlotPtr& slot);
93  RewriteDriver* driver, RewriteContext* parent,
94  ResourceContext* resource_context) {
95  return new FakeFilter::Context(this, driver, parent, resource_context);
96  }
97  int num_rewrites() const { return num_rewrites_; }
98  int num_encode_user_agent() const { return num_calls_to_encode_user_agent_; }
99  void ClearStats();
100  void set_enabled(bool x) { enabled_ = x; }
101  bool enabled() { return enabled_; }
102  bool exceed_deadline() { return exceed_deadline_; }
103  void set_exceed_deadline(bool x) { exceed_deadline_ = x; }
104  void IncRewrites() { ++num_rewrites_; }
105  void set_output_content_type(const ContentType* type) {
106  output_content_type_ = type;
107  }
108  const ContentType* output_content_type() { return output_content_type_; }
110  ResourceContext* context) const;
111 
112  protected:
113  virtual const char* id() const { return id_; }
114  virtual OutputResourceKind kind() const { return kRewrittenResource; }
115  virtual const char* Name() const { return "MockFilter"; }
116  virtual bool ComputeOnTheFly() const { return false; }
117 
118  private:
119  const char* id_;
120  bool exceed_deadline_;
121  bool enabled_;
122  int num_rewrites_;
123  const ContentType* output_content_type_;
124  mutable int num_calls_to_encode_user_agent_;
125  semantic_type::Category category_;
126  DISALLOW_COPY_AND_ASSIGN(FakeFilter);
127 };
128 
129 }
130 
131 #endif
RewriteContext * parent()
Allows a nested rewriter to walk up its parent hierarchy.
Definition: rewrite_context.h:266
virtual void EncodeUserAgentIntoResourceContext(ResourceContext *context) const
SingleRewriteContext(RewriteDriver *driver, RewriteContext *parent, ResourceContext *resource_context)
virtual const char * id() const
Returns the filter ID.
Definition: fake_filter.h:62
virtual bool ComputeOnTheFly() const
Definition: fake_filter.h:116
virtual void StartDocumentImpl()
Definition: fake_filter.h:83
virtual RewriteContext * MakeFakeContext(RewriteDriver *driver, RewriteContext *parent, ResourceContext *resource_context)
Factory for context so a subclass can override FakeFilter::Context.
Definition: fake_filter.h:92
Definition: fake_filter.h:44
Definition: rewrite_filter.h:37
Definition: rewrite_driver.h:98
void RewriteSingle(const ResourcePtr &input, const OutputResourcePtr &output)
Subclasses of SingleRewriteContext must override this:
virtual OutputResourceKind kind() const
Definition: fake_filter.h:63
Definition: rewrite_context.h:144
derived from some input resource URL or URLs.
Definition: output_resource_kind.h:27
Definition: single_rewrite_context.h:36
Definition: fake_filter.h:46
GoogleString UserAgentCacheKey(const ResourceContext *resource_context) const
virtual RewriteContext * MakeNestedRewriteContext(RewriteContext *parent, const ResourceSlotPtr &slot)
virtual RewriteContext * MakeRewriteContext()
Definition: fake_filter.h:86
OutputResourceKind
Definition: output_resource_kind.h:26