Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: chrome/browser/search/iframe_source_unittest.cc

Issue 2856093004: Generalize content::URLDataSource so that it can be used by the network service. (Closed)
Patch Set: review comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/search/iframe_source.h" 5 #include "chrome/browser/search/iframe_source.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ref_counted_memory.h" 10 #include "base/memory/ref_counted_memory.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 TestIframeSource* source() { return source_.get(); } 83 TestIframeSource* source() { return source_.get(); }
84 84
85 std::string response_string() { 85 std::string response_string() {
86 if (response_.get()) { 86 if (response_.get()) {
87 return std::string(response_->front_as<char>(), response_->size()); 87 return std::string(response_->front_as<char>(), response_->size());
88 } 88 }
89 return ""; 89 return "";
90 } 90 }
91 91
92 std::unique_ptr<net::URLRequest> MockRequest(const std::string& url,
93 int render_process_id) {
94 std::unique_ptr<net::URLRequest> request(
95 resource_context_.GetRequestContext()->CreateRequest(
96 GURL(url), net::DEFAULT_PRIORITY, NULL,
97 TRAFFIC_ANNOTATION_FOR_TESTS));
98 content::ResourceRequestInfo::AllocateForTesting(
99 request.get(), content::RESOURCE_TYPE_SUB_FRAME, &resource_context_,
100 render_process_id, MSG_ROUTING_NONE, MSG_ROUTING_NONE,
101 /*is_main_frame=*/false,
102 /*parent_is_main_frame=*/false,
103 /*allow_download=*/true,
104 /*is_async=*/false, content::PREVIEWS_OFF);
105 return request;
106 }
107
108 void SendResource(int resource_id) { 92 void SendResource(int resource_id) {
109 source()->SendResource(resource_id, callback_); 93 source()->SendResource(resource_id, callback_);
110 } 94 }
111 95
112 void SendJSWithOrigin(int resource_id) { 96 void SendJSWithOrigin(int resource_id) {
113 source()->SendJSWithOrigin( 97 source()->SendJSWithOrigin(
114 resource_id, content::ResourceRequestInfo::WebContentsGetter(), 98 resource_id, content::ResourceRequestInfo::WebContentsGetter(),
115 callback_); 99 callback_);
116 } 100 }
117 101
102 bool ShouldService(const std::string& path, int process_id) {
103 return source()->ShouldServiceRequest(GURL(path), &resource_context_,
104 process_id);
105 }
106
118 private: 107 private:
119 void SetUp() override { 108 void SetUp() override {
120 source_.reset(new TestIframeSource()); 109 source_.reset(new TestIframeSource());
121 callback_ = base::Bind(&IframeSourceTest::SaveResponse, 110 callback_ = base::Bind(&IframeSourceTest::SaveResponse,
122 base::Unretained(this)); 111 base::Unretained(this));
123 instant_io_context_ = new InstantIOContext; 112 instant_io_context_ = new InstantIOContext;
124 InstantIOContext::SetUserDataOnIO(&resource_context_, instant_io_context_); 113 InstantIOContext::SetUserDataOnIO(&resource_context_, instant_io_context_);
125 source_->set_origin(kInstantOrigin); 114 source_->set_origin(kInstantOrigin);
126 InstantIOContext::AddInstantProcessOnIO(instant_io_context_, 115 InstantIOContext::AddInstantProcessOnIO(instant_io_context_,
127 kInstantRendererPID); 116 kInstantRendererPID);
(...skipping 10 matching lines...) Expand all
138 127
139 net::TestURLRequestContext test_url_request_context_; 128 net::TestURLRequestContext test_url_request_context_;
140 content::MockResourceContext resource_context_; 129 content::MockResourceContext resource_context_;
141 std::unique_ptr<TestIframeSource> source_; 130 std::unique_ptr<TestIframeSource> source_;
142 content::URLDataSource::GotDataCallback callback_; 131 content::URLDataSource::GotDataCallback callback_;
143 scoped_refptr<InstantIOContext> instant_io_context_; 132 scoped_refptr<InstantIOContext> instant_io_context_;
144 scoped_refptr<base::RefCountedMemory> response_; 133 scoped_refptr<base::RefCountedMemory> response_;
145 }; 134 };
146 135
147 TEST_F(IframeSourceTest, ShouldServiceRequest) { 136 TEST_F(IframeSourceTest, ShouldServiceRequest) {
148 std::unique_ptr<net::URLRequest> request;
149 source()->set_origin(kNonInstantOrigin); 137 source()->set_origin(kNonInstantOrigin);
150 request = MockRequest("http://test/loader.js", kNonInstantRendererPID); 138 EXPECT_FALSE(ShouldService("http://test/loader.js", kNonInstantRendererPID));
151 EXPECT_FALSE(source()->ShouldServiceRequest(request.get()));
152 source()->set_origin(kInstantOrigin); 139 source()->set_origin(kInstantOrigin);
153 request = MockRequest("chrome-search://bogus/valid.js", kInstantRendererPID); 140 EXPECT_FALSE(
154 EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); 141 ShouldService("chrome-search://bogus/valid.js", kInstantRendererPID));
155 source()->set_origin(kInstantOrigin); 142 source()->set_origin(kInstantOrigin);
156 request = MockRequest("chrome-search://test/bogus.js", kInstantRendererPID); 143 EXPECT_FALSE(
157 EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); 144 ShouldService("chrome-search://test/bogus.js", kInstantRendererPID));
158 source()->set_origin(kInstantOrigin); 145 source()->set_origin(kInstantOrigin);
159 request = MockRequest("chrome-search://test/valid.js", kInstantRendererPID); 146 EXPECT_TRUE(
160 EXPECT_TRUE(source()->ShouldServiceRequest(request.get())); 147 ShouldService("chrome-search://test/valid.js", kInstantRendererPID));
161 source()->set_origin(kNonInstantOrigin); 148 source()->set_origin(kNonInstantOrigin);
162 request = MockRequest("chrome-search://test/valid.js", 149 EXPECT_FALSE(
163 kNonInstantRendererPID); 150 ShouldService("chrome-search://test/valid.js", kNonInstantRendererPID));
164 EXPECT_FALSE(source()->ShouldServiceRequest(request.get()));
165 source()->set_origin(std::string()); 151 source()->set_origin(std::string());
166 request = MockRequest("chrome-search://test/valid.js", kInvalidRendererPID); 152 EXPECT_FALSE(
167 EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); 153 ShouldService("chrome-search://test/valid.js", kInvalidRendererPID));
168 } 154 }
169 155
170 TEST_F(IframeSourceTest, GetMimeType) { 156 TEST_F(IframeSourceTest, GetMimeType) {
171 // URLDataManagerBackend does not include / in path_and_query. 157 // URLDataManagerBackend does not include / in path_and_query.
172 EXPECT_EQ("text/html", source()->GetMimeType("foo.html")); 158 EXPECT_EQ("text/html", source()->GetMimeType("foo.html"));
173 EXPECT_EQ("application/javascript", source()->GetMimeType("foo.js")); 159 EXPECT_EQ("application/javascript", source()->GetMimeType("foo.js"));
174 EXPECT_EQ("text/css", source()->GetMimeType("foo.css")); 160 EXPECT_EQ("text/css", source()->GetMimeType("foo.css"));
175 EXPECT_EQ("image/png", source()->GetMimeType("foo.png")); 161 EXPECT_EQ("image/png", source()->GetMimeType("foo.png"));
176 EXPECT_EQ("", source()->GetMimeType("bogus")); 162 EXPECT_EQ("", source()->GetMimeType("bogus"));
177 } 163 }
178 164
179 TEST_F(IframeSourceTest, SendResource) { 165 TEST_F(IframeSourceTest, SendResource) {
180 SendResource(IDR_MOST_VISITED_TITLE_HTML); 166 SendResource(IDR_MOST_VISITED_TITLE_HTML);
181 EXPECT_FALSE(response_string().empty()); 167 EXPECT_FALSE(response_string().empty());
182 } 168 }
183 169
184 TEST_F(IframeSourceTest, SendJSWithOrigin) { 170 TEST_F(IframeSourceTest, SendJSWithOrigin) {
185 source()->set_origin(kInstantOrigin); 171 source()->set_origin(kInstantOrigin);
186 SendJSWithOrigin(IDR_MOST_VISITED_TITLE_JS); 172 SendJSWithOrigin(IDR_MOST_VISITED_TITLE_JS);
187 EXPECT_FALSE(response_string().empty()); 173 EXPECT_FALSE(response_string().empty());
188 source()->set_origin(kNonInstantOrigin); 174 source()->set_origin(kNonInstantOrigin);
189 SendJSWithOrigin(IDR_MOST_VISITED_TITLE_JS); 175 SendJSWithOrigin(IDR_MOST_VISITED_TITLE_JS);
190 EXPECT_FALSE(response_string().empty()); 176 EXPECT_FALSE(response_string().empty());
191 source()->set_origin(std::string()); 177 source()->set_origin(std::string());
192 SendJSWithOrigin(IDR_MOST_VISITED_TITLE_JS); 178 SendJSWithOrigin(IDR_MOST_VISITED_TITLE_JS);
193 EXPECT_TRUE(response_string().empty()); 179 EXPECT_TRUE(response_string().empty());
194 } 180 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698