Chromium Code Reviews| Index: content/common/resource_dispatcher_unittest.cc |
| diff --git a/content/common/resource_dispatcher_unittest.cc b/content/common/resource_dispatcher_unittest.cc |
| index e87463f40a425455750c74e1becc86fc58de9ac9..137943dbc47bf7adb2452386930f24117c6f42c1 100644 |
| --- a/content/common/resource_dispatcher_unittest.cc |
| +++ b/content/common/resource_dispatcher_unittest.cc |
| @@ -343,4 +343,98 @@ TEST_F(DeferredResourceLoadingTest, DeferredLoadTest) { |
| delete bridge; |
| } |
| +class TimeConversionTest : public ResourceDispatcherTest, |
| + public ResourceLoaderBridge::Peer { |
| + public: |
| + virtual bool Send(IPC::Message* msg) { |
| + delete msg; |
| + return true; |
| + } |
| + |
| + void PerformTest(const ResourceResponseHead& response_head) { |
| + scoped_ptr<ResourceLoaderBridge> bridge(CreateBridge()); |
| + bridge->Start(this); |
| + |
| + IPC::Message* response_message = |
|
darin (slow to review)
2012/08/02 04:53:15
nit: no need to heap allocate the IPC message :)
James Simonsen
2012/08/02 19:02:58
Done.
|
| + new ResourceMsg_ReceivedResponse(0, 0, response_head); |
| + |
| + dispatcher_->OnMessageReceived(*response_message); |
| + |
| + delete response_message; |
| + } |
| + |
| + // ResourceLoaderBridge::Peer methods. |
| + virtual void OnUploadProgress(uint64 position, uint64 size) { |
| + } |
|
darin (slow to review)
2012/08/02 04:53:15
nit: do these need OVERRIDE?
James Simonsen
2012/08/02 19:02:58
Done.
|
| + |
| + virtual bool OnReceivedRedirect( |
| + const GURL& new_url, |
| + const ResourceResponseInfo& info, |
| + bool* has_new_first_party_for_cookies, |
| + GURL* new_first_party_for_cookies) { |
| + return true; |
| + } |
| + |
| + virtual void OnReceivedResponse(const ResourceResponseInfo& info) { |
| + response_info_ = info; |
| + } |
| + |
| + virtual void OnDownloadedData(int len) { |
| + } |
| + |
| + virtual void OnReceivedData(const char* data, |
| + int data_length, |
| + int encoded_data_length) { |
| + } |
| + |
| + virtual void OnCompletedRequest(const net::URLRequestStatus& status, |
| + const std::string& security_info, |
| + const base::TimeTicks& completion_time) { |
| + } |
| + |
| + const ResourceResponseInfo& response_info() const { return response_info_; } |
| + |
| + private: |
| + ResourceResponseInfo response_info_; |
| +}; |
| + |
| +TEST_F(TimeConversionTest, ProperlyInitialized) { |
| + ResourceResponseHead response_head; |
| + response_head.status.set_status(net::URLRequestStatus::SUCCESS); |
| + response_head.request_start = base::TimeTicks::FromInternalValue(5); |
| + response_head.response_start = base::TimeTicks::FromInternalValue(15); |
| + response_head.load_timing.base_time = base::Time::Now(); |
| + response_head.load_timing.base_ticks = base::TimeTicks::FromInternalValue(10); |
| + response_head.load_timing.dns_start = -1; |
| + response_head.load_timing.connect_start = 3; |
| + |
| + PerformTest(response_head); |
| + |
| + EXPECT_LT(0, response_info().load_timing.base_ticks.ToInternalValue()); |
| + EXPECT_EQ(-1, response_info().load_timing.dns_start); |
| + EXPECT_LE(0, response_info().load_timing.connect_start); |
| +} |
| + |
| +TEST_F(TimeConversionTest, PartiallyInitialized) { |
| + ResourceResponseHead response_head; |
| + response_head.status.set_status(net::URLRequestStatus::SUCCESS); |
| + response_head.request_start = base::TimeTicks::FromInternalValue(5); |
| + response_head.response_start = base::TimeTicks::FromInternalValue(15); |
| + |
| + PerformTest(response_head); |
| + |
| + EXPECT_EQ(0, response_info().load_timing.base_ticks.ToInternalValue()); |
| + EXPECT_EQ(-1, response_info().load_timing.dns_start); |
| +} |
| + |
| +TEST_F(TimeConversionTest, NotInitialized) { |
| + ResourceResponseHead response_head; |
| + response_head.status.set_status(net::URLRequestStatus::SUCCESS); |
| + |
| + PerformTest(response_head); |
| + |
| + EXPECT_EQ(0, response_info().load_timing.base_ticks.ToInternalValue()); |
| + EXPECT_EQ(-1, response_info().load_timing.dns_start); |
| +} |
| + |
| } // namespace content |