1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef NET_FILTER_MOCK_FILTER_CONTEXT_H_
6#define NET_FILTER_MOCK_FILTER_CONTEXT_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "net/filter/filter.h"
12#include "url/gurl.h"
13
14namespace net {
15
16class URLRequestContext;
17
18class MockFilterContext : public FilterContext {
19 public:
20  MockFilterContext();
21  virtual ~MockFilterContext();
22
23  void SetMimeType(const std::string& mime_type) { mime_type_ = mime_type; }
24  void SetURL(const GURL& gurl) { gurl_ = gurl; }
25  void SetContentDisposition(const std::string& disposition) {
26    content_disposition_ = disposition;
27  }
28  void SetRequestTime(const base::Time time) { request_time_ = time; }
29  void SetCached(bool is_cached) { is_cached_content_ = is_cached; }
30  void SetDownload(bool is_download) { is_download_ = is_download; }
31  void SetResponseCode(int response_code) { response_code_ = response_code; }
32  void SetSdchResponse(bool is_sdch_response) {
33    is_sdch_response_ = is_sdch_response;
34  }
35  URLRequestContext* GetModifiableURLRequestContext() const {
36    return context_.get();
37  }
38
39  // After a URLRequest's destructor is called, some interfaces may become
40  // unstable.  This method is used to signal that state, so we can tag use
41  // of those interfaces as coding errors.
42  void NukeUnstableInterfaces();
43
44  virtual bool GetMimeType(std::string* mime_type) const OVERRIDE;
45
46  // What URL was used to access this data?
47  // Return false if gurl is not present.
48  virtual bool GetURL(GURL* gurl) const OVERRIDE;
49
50  // What Content-Disposition did the server supply for this data?
51  // Return false if Content-Disposition was not present.
52  virtual bool GetContentDisposition(std::string* disposition) const OVERRIDE;
53
54  // What was this data requested from a server?
55  virtual base::Time GetRequestTime() const OVERRIDE;
56
57  // Is data supplied from cache, or fresh across the net?
58  virtual bool IsCachedContent() const OVERRIDE;
59
60  // Is this a download?
61  virtual bool IsDownload() const OVERRIDE;
62
63  // Was this data flagged as a response to a request with an SDCH dictionary?
64  virtual bool SdchResponseExpected() const OVERRIDE;
65
66  // How many bytes were fed to filter(s) so far?
67  virtual int64 GetByteReadCount() const OVERRIDE;
68
69  virtual int GetResponseCode() const OVERRIDE;
70
71  // The URLRequestContext associated with the request.
72  virtual const URLRequestContext* GetURLRequestContext() const OVERRIDE;
73
74  virtual void RecordPacketStats(StatisticSelector statistic) const OVERRIDE {}
75
76 private:
77  int buffer_size_;
78  std::string mime_type_;
79  std::string content_disposition_;
80  GURL gurl_;
81  base::Time request_time_;
82  bool is_cached_content_;
83  bool is_download_;
84  bool is_sdch_response_;
85  bool ok_to_call_get_url_;
86  int response_code_;
87  scoped_ptr<URLRequestContext> context_;
88
89  DISALLOW_COPY_AND_ASSIGN(MockFilterContext);
90};
91
92}  // namespace net
93
94#endif  // NET_FILTER_MOCK_FILTER_CONTEXT_H_
95