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

Side by Side Diff: content/browser/loader/offline_policy_unittest.cc

Issue 12886022: Implement offline mode behind a flag (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync'd to r193064. Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 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 #include "content/browser/loader/offline_policy.h"
6
7 #include "base/command_line.h"
8 #include "content/public/common/content_switches.h"
9 #include "net/base/load_flags.h"
10 #include "net/http/http_response_info.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "webkit/glue/resource_type.h"
13
14 namespace content {
15
16 class OfflinePolicyTest : public testing::Test {
17 public:
18 virtual void SetUp() {
19 CommandLine::ForCurrentProcess()->AppendSwitch(
20 switches::kEnableOfflineCacheAccess);
21 }
22
23 protected:
24 OfflinePolicy policy_;
25 };
26
27 // Confirm that the initial state of an offline object is to return
28 // LOAD_FROM_CACHE_IF_OFFLINE until it gets changed.
29 TEST_F(OfflinePolicyTest, InitialState) {
30 // Two loads without any reset, no RequestCompleted.
31 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
32 policy_.GetAdditionalLoadFlags(0, ResourceType::MAIN_FRAME));
33 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
34 policy_.GetAdditionalLoadFlags(0, ResourceType::IMAGE));
35 }
36
37 // Completion without any network probing doesn't change result value.
38 TEST_F(OfflinePolicyTest, CompletedUncertain) {
39 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
40 policy_.GetAdditionalLoadFlags(0, ResourceType::MAIN_FRAME));
41 net::HttpResponseInfo response_info;
42 policy_.RequestCompleted(response_info);
43 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
44 policy_.GetAdditionalLoadFlags(0, ResourceType::OBJECT));
45 }
46
47 // Completion with a failed network probe changes result value.
48 TEST_F(OfflinePolicyTest, CompletedNoNetwork) {
49 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
50 policy_.GetAdditionalLoadFlags(0, ResourceType::MAIN_FRAME));
51 net::HttpResponseInfo response_info;
52 response_info.server_data_unavailable = true;
53 policy_.RequestCompleted(response_info);
54 EXPECT_EQ(net::LOAD_ONLY_FROM_CACHE,
55 policy_.GetAdditionalLoadFlags(0, ResourceType::OBJECT));
56 }
57
58 // Completion with a successful network probe changes result value.
59 TEST_F(OfflinePolicyTest, CompletedNetwork) {
60 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
61 policy_.GetAdditionalLoadFlags(0, ResourceType::MAIN_FRAME));
62 net::HttpResponseInfo response_info;
63 response_info.network_accessed = true;
64 policy_.RequestCompleted(response_info);
65 EXPECT_EQ(0, policy_.GetAdditionalLoadFlags(0, ResourceType::OBJECT));
66 }
67
68 // A new navigation resets a state change.
69 TEST_F(OfflinePolicyTest, NewNavigationReset) {
70 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
71 policy_.GetAdditionalLoadFlags(0, ResourceType::MAIN_FRAME));
72 net::HttpResponseInfo response_info;
73 response_info.network_accessed = true;
74 policy_.RequestCompleted(response_info);
75 EXPECT_EQ(0, policy_.GetAdditionalLoadFlags(0, ResourceType::OBJECT));
76 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
77 policy_.GetAdditionalLoadFlags(0, ResourceType::MAIN_FRAME));
78 EXPECT_EQ(net::LOAD_FROM_CACHE_IF_OFFLINE,
79 policy_.GetAdditionalLoadFlags(0, ResourceType::OBJECT));
80 }
81
82 // Cache related flags inhibit the returning of any special flags.
83 TEST_F(OfflinePolicyTest, ConsumerFlagOverride) {
84 EXPECT_EQ(0, policy_.GetAdditionalLoadFlags(net::LOAD_BYPASS_CACHE,
85 ResourceType::MAIN_FRAME));
86 net::HttpResponseInfo response_info;
87 response_info.server_data_unavailable = true;
88 policy_.RequestCompleted(response_info);
89 EXPECT_EQ(0, policy_.GetAdditionalLoadFlags(net::LOAD_BYPASS_CACHE,
90 ResourceType::OBJECT));
91 }
92
93 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698