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

Side by Side Diff: media/blink/resource_multibuffer_data_provider_unittest.cc

Issue 2338963002: Store, use and send etags. (Closed)
Patch Set: comments addressed Created 4 years, 3 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "media/blink/resource_multibuffer_data_provider.h" 5 #include "media/blink/resource_multibuffer_data_provider.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 28 matching lines...) Expand all
39 using blink::WebLocalFrame; 39 using blink::WebLocalFrame;
40 using blink::WebString; 40 using blink::WebString;
41 using blink::WebURLError; 41 using blink::WebURLError;
42 using blink::WebURLResponse; 42 using blink::WebURLResponse;
43 using blink::WebView; 43 using blink::WebView;
44 44
45 namespace media { 45 namespace media {
46 46
47 const char kHttpUrl[] = "http://test"; 47 const char kHttpUrl[] = "http://test";
48 const char kHttpRedirect[] = "http://test/ing"; 48 const char kHttpRedirect[] = "http://test/ing";
49 const char kEtag[] = "\"arglebargle glopy-glyf?\"";
49 50
50 const int kDataSize = 1024; 51 const int kDataSize = 1024;
51 const int kHttpOK = 200; 52 const int kHttpOK = 200;
52 const int kHttpPartialContent = 206; 53 const int kHttpPartialContent = 206;
53 54
54 enum NetworkState { NONE, LOADED, LOADING }; 55 enum NetworkState { NONE, LOADED, LOADING };
55 56
56 // Predicate that tests that request disallows compressed data. 57 // Predicate that tests that request disallows compressed data.
57 static bool CorrectAcceptEncoding(const blink::WebURLRequest& request) { 58 static bool CorrectAcceptEncodingAndEtag(const blink::WebURLRequest& request) {
59 std::string etag =
60 request.httpHeaderField(WebString::fromUTF8("If-Match")).utf8();
61 EXPECT_EQ(etag, kEtag);
62
58 std::string value = 63 std::string value =
59 request.httpHeaderField( 64 request.httpHeaderField(
60 WebString::fromUTF8(net::HttpRequestHeaders::kAcceptEncoding)) 65 WebString::fromUTF8(net::HttpRequestHeaders::kAcceptEncoding))
61 .utf8(); 66 .utf8();
62 return (value.find("identity;q=1") != std::string::npos) && 67 return (value.find("identity;q=1") != std::string::npos) &&
63 (value.find("*;q=0") != std::string::npos); 68 (value.find("*;q=0") != std::string::npos);
64 } 69 }
65 70
66 class ResourceMultiBufferDataProviderTest : public testing::Test { 71 class ResourceMultiBufferDataProviderTest : public testing::Test {
67 public: 72 public:
(...skipping 10 matching lines...) Expand all
78 } 83 }
79 84
80 virtual ~ResourceMultiBufferDataProviderTest() { 85 virtual ~ResourceMultiBufferDataProviderTest() {
81 view_->close(); 86 view_->close();
82 frame_->close(); 87 frame_->close();
83 } 88 }
84 89
85 void Initialize(const char* url, int first_position) { 90 void Initialize(const char* url, int first_position) {
86 gurl_ = GURL(url); 91 gurl_ = GURL(url);
87 url_data_ = url_index_->GetByUrl(gurl_, UrlData::CORS_UNSPECIFIED); 92 url_data_ = url_index_->GetByUrl(gurl_, UrlData::CORS_UNSPECIFIED);
93 url_data_->set_etag(kEtag);
88 DCHECK(url_data_); 94 DCHECK(url_data_);
89 DCHECK(url_data_->frame()); 95 DCHECK(url_data_->frame());
90 url_data_->OnRedirect( 96 url_data_->OnRedirect(
91 base::Bind(&ResourceMultiBufferDataProviderTest::RedirectCallback, 97 base::Bind(&ResourceMultiBufferDataProviderTest::RedirectCallback,
92 base::Unretained(this))); 98 base::Unretained(this)));
93 99
94 first_position_ = first_position; 100 first_position_ = first_position;
95 101
96 std::unique_ptr<ResourceMultiBufferDataProvider> loader( 102 std::unique_ptr<ResourceMultiBufferDataProvider> loader(
97 new ResourceMultiBufferDataProvider(url_data_.get(), first_position_)); 103 new ResourceMultiBufferDataProvider(url_data_.get(), first_position_));
98 loader_ = loader.get(); 104 loader_ = loader.get();
99 url_data_->multibuffer()->AddProvider(std::move(loader)); 105 url_data_->multibuffer()->AddProvider(std::move(loader));
100 106
101 // |test_loader_| will be used when Start() is called. 107 // |test_loader_| will be used when Start() is called.
102 url_loader_ = new NiceMock<MockWebURLLoader>(); 108 url_loader_ = new NiceMock<MockWebURLLoader>();
103 loader_->test_loader_ = std::unique_ptr<blink::WebURLLoader>(url_loader_); 109 loader_->test_loader_ = std::unique_ptr<blink::WebURLLoader>(url_loader_);
104 } 110 }
105 111
106 void Start() { 112 void Start() {
107 InSequence s; 113 InSequence s;
108 EXPECT_CALL(*url_loader_, 114 EXPECT_CALL(
109 loadAsynchronously(Truly(CorrectAcceptEncoding), loader_)); 115 *url_loader_,
116 loadAsynchronously(Truly(CorrectAcceptEncodingAndEtag), loader_));
110 117
111 loader_->Start(); 118 loader_->Start();
112 } 119 }
113 120
114 void FullResponse(int64_t instance_size, bool ok = true) { 121 void FullResponse(int64_t instance_size, bool ok = true) {
115 WebURLResponse response(gurl_); 122 WebURLResponse response(gurl_);
116 response.setHTTPHeaderField( 123 response.setHTTPHeaderField(
117 WebString::fromUTF8("Content-Length"), 124 WebString::fromUTF8("Content-Length"),
118 WebString::fromUTF8(base::StringPrintf("%" PRId64, instance_size))); 125 WebString::fromUTF8(base::StringPrintf("%" PRId64, instance_size)));
119 response.setExpectedContentLength(instance_size); 126 response.setExpectedContentLength(instance_size);
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 TEST_F(ResourceMultiBufferDataProviderTest, TestRedirects) { 331 TEST_F(ResourceMultiBufferDataProviderTest, TestRedirects) {
325 // Test redirect. 332 // Test redirect.
326 Initialize(kHttpUrl, 0); 333 Initialize(kHttpUrl, 0);
327 Start(); 334 Start();
328 Redirect(kHttpRedirect); 335 Redirect(kHttpRedirect);
329 FullResponse(1024); 336 FullResponse(1024);
330 StopWhenLoad(); 337 StopWhenLoad();
331 } 338 }
332 339
333 } // namespace media 340 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698