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

Side by Side Diff: net/url_request/url_request_simple_job_unittest.cc

Issue 104513002: Fixed playing video in component extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed nits Created 6 years, 11 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
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reservedelegate_.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/run_loop.h"
6 #include "base/strings/stringprintf.h"
7 #include "net/base/request_priority.h"
8 #include "net/url_request/url_request_job.h"
9 #include "net/url_request/url_request_job_factory.h"
10 #include "net/url_request/url_request_job_factory_impl.h"
11 #include "net/url_request/url_request_simple_job.h"
12 #include "net/url_request/url_request_test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace net {
16
17 namespace {
18
19 const char kTestData[] = "Huge data array";
20 const size_t kRangeFirstPosition = 5;
21 const size_t kRangeLastPosition = 8;
22 COMPILE_ASSERT(kRangeFirstPosition > 0 &&
23 kRangeFirstPosition < kRangeLastPosition &&
24 kRangeLastPosition < arraysize(kTestData) - 1, invalid_range);
25
26 class MockSimpleJob : public URLRequestSimpleJob {
27 public:
28 MockSimpleJob(URLRequest* request, NetworkDelegate* network_delegate)
29 : URLRequestSimpleJob(request, network_delegate) {
30 }
31
32 protected:
33 virtual int GetData(std::string* mime_type,
34 std::string* charset,
35 std::string* data,
36 const CompletionCallback& callback) const OVERRIDE {
37 mime_type->assign("text/plain");
38 charset->assign("US-ASCII");
39 data->assign(kTestData);
40 return OK;
41 }
42
43 private:
44 virtual ~MockSimpleJob() {}
45
46 std::string data_;
47
48 DISALLOW_COPY_AND_ASSIGN(MockSimpleJob);
49 };
50
51 class SimpleJobProtocolHandler :
52 public URLRequestJobFactory::ProtocolHandler {
53 public:
54 virtual URLRequestJob* MaybeCreateJob(
55 URLRequest* request,
56 NetworkDelegate* network_delegate) const OVERRIDE {
57 return new MockSimpleJob(request, network_delegate);
58 }
59 };
60
61 class URLRequestSimpleJobTest : public ::testing::Test {
62 public:
63 URLRequestSimpleJobTest() : context_(true) {
64 job_factory_.SetProtocolHandler("data", new SimpleJobProtocolHandler());
65 context_.set_job_factory(&job_factory_);
66 context_.Init();
67
68 request_.reset(new URLRequest(
69 GURL("data:test"), DEFAULT_PRIORITY, &delegate_, &context_));
70 }
71
72 void StartRequest(const HttpRequestHeaders* headers) {
73 if (headers)
74 request_->SetExtraRequestHeaders(*headers);
75 request_->Start();
76
77 EXPECT_TRUE(request_->is_pending());
78 base::RunLoop().Run();
79 EXPECT_FALSE(request_->is_pending());
80 }
81
82 protected:
83 URLRequestJobFactoryImpl job_factory_;
84 TestURLRequestContext context_;
85 TestDelegate delegate_;
86 scoped_ptr<URLRequest> request_;
87 };
88
89 } // namespace
90
91 TEST_F(URLRequestSimpleJobTest, SimpleRequest) {
92 StartRequest(NULL);
93 ASSERT_TRUE(request_->status().is_success());
94 EXPECT_EQ(kTestData, delegate_.data_received());
95 }
96
97 TEST_F(URLRequestSimpleJobTest, RangeRequest) {
98 const std::string kExpectedBody = std::string(
99 kTestData + kRangeFirstPosition, kTestData + kRangeLastPosition + 1);
mmenke 2014/01/09 15:49:24 nit: +2 indent.
100 HttpRequestHeaders headers;
101 headers.SetHeader(
102 HttpRequestHeaders::kRange,
103 HttpByteRange::Bounded(kRangeFirstPosition, kRangeLastPosition)
104 .GetHeaderValue());
105
106 StartRequest(&headers);
107
108 ASSERT_TRUE(request_->status().is_success());
109 EXPECT_EQ(kExpectedBody, delegate_.data_received());
110 }
111
112 TEST_F(URLRequestSimpleJobTest, MultipleRangeRequest) {
113 HttpRequestHeaders headers;
114 size_t middle_pos = (kRangeFirstPosition + kRangeLastPosition)/2;
115 std::string range = base::StringPrintf("bytes=%zu-%zu,%zu-%zu",
116 kRangeFirstPosition,
117 middle_pos,
118 middle_pos + 1,
119 kRangeLastPosition);
120 headers.SetHeader(HttpRequestHeaders::kRange, range);
121
122 StartRequest(&headers);
123
124 EXPECT_TRUE(delegate_.request_failed());
125 EXPECT_EQ(ERR_REQUEST_RANGE_NOT_SATISFIABLE, request_->status().error());
126 }
127
128 TEST_F(URLRequestSimpleJobTest, InvalidRangeRequest) {
129 HttpRequestHeaders headers;
130 std::string range = base::StringPrintf(
131 "bytes=%zu-%zu", kRangeLastPosition, kRangeFirstPosition);
132 headers.SetHeader(HttpRequestHeaders::kRange, range);
133
134 StartRequest(&headers);
135
136 ASSERT_TRUE(request_->status().is_success());
137 EXPECT_EQ(kTestData, delegate_.data_received());
138 }
139
140 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698