OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 #include "webkit/appcache/appcache.h" | 6 #include "webkit/appcache/appcache.h" |
7 #include "webkit/appcache/appcache_frontend_impl.h" | 7 #include "webkit/appcache/appcache_frontend_impl.h" |
8 #include "webkit/appcache/appcache_host.h" | 8 #include "webkit/appcache/appcache_host.h" |
9 #include "webkit/appcache/mock_appcache_service.h" | 9 #include "webkit/appcache/mock_appcache_service.h" |
10 | 10 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 | 81 |
82 scoped_refptr<AppCache> cache(new AppCache(&service, 1234)); | 82 scoped_refptr<AppCache> cache(new AppCache(&service, 1234)); |
83 EXPECT_TRUE(cache->fallback_namespaces_.empty()); | 83 EXPECT_TRUE(cache->fallback_namespaces_.empty()); |
84 EXPECT_TRUE(cache->online_whitelist_namespaces_.empty()); | 84 EXPECT_TRUE(cache->online_whitelist_namespaces_.empty()); |
85 EXPECT_FALSE(cache->online_whitelist_all_); | 85 EXPECT_FALSE(cache->online_whitelist_all_); |
86 | 86 |
87 Manifest manifest; | 87 Manifest manifest; |
88 manifest.explicit_urls.insert("http://one.com"); | 88 manifest.explicit_urls.insert("http://one.com"); |
89 manifest.explicit_urls.insert("http://two.com"); | 89 manifest.explicit_urls.insert("http://two.com"); |
90 manifest.fallback_namespaces.push_back( | 90 manifest.fallback_namespaces.push_back( |
91 FallbackNamespace(GURL("http://fb1.com"), GURL("http://fbone.com"))); | 91 Namespace(FALLBACK_NAMESPACE, GURL("http://fb1.com"), |
| 92 GURL("http://fbone.com"))); |
92 manifest.online_whitelist_namespaces.push_back(GURL("http://w1.com")); | 93 manifest.online_whitelist_namespaces.push_back(GURL("http://w1.com")); |
93 manifest.online_whitelist_namespaces.push_back(GURL("http://w2.com")); | 94 manifest.online_whitelist_namespaces.push_back(GURL("http://w2.com")); |
94 manifest.online_whitelist_all = true; | 95 manifest.online_whitelist_all = true; |
95 | 96 |
96 cache->InitializeWithManifest(&manifest); | 97 cache->InitializeWithManifest(&manifest); |
97 const std::vector<FallbackNamespace>& fallbacks = | 98 const std::vector<Namespace>& fallbacks = |
98 cache->fallback_namespaces_; | 99 cache->fallback_namespaces_; |
99 size_t expected = 1; | 100 size_t expected = 1; |
100 EXPECT_EQ(expected, fallbacks.size()); | 101 EXPECT_EQ(expected, fallbacks.size()); |
101 EXPECT_EQ(GURL("http://fb1.com"), fallbacks[0].first); | 102 EXPECT_EQ(GURL("http://fb1.com"), fallbacks[0].namespace_url); |
102 EXPECT_EQ(GURL("http://fbone.com"), fallbacks[0].second); | 103 EXPECT_EQ(GURL("http://fbone.com"), fallbacks[0].target_url); |
103 const std::vector<GURL>& whitelist = cache->online_whitelist_namespaces_; | 104 const std::vector<GURL>& whitelist = cache->online_whitelist_namespaces_; |
104 expected = 2; | 105 expected = 2; |
105 EXPECT_EQ(expected, whitelist.size()); | 106 EXPECT_EQ(expected, whitelist.size()); |
106 EXPECT_EQ(GURL("http://w1.com"), whitelist[0]); | 107 EXPECT_EQ(GURL("http://w1.com"), whitelist[0]); |
107 EXPECT_EQ(GURL("http://w2.com"), whitelist[1]); | 108 EXPECT_EQ(GURL("http://w2.com"), whitelist[1]); |
108 EXPECT_TRUE(cache->online_whitelist_all_); | 109 EXPECT_TRUE(cache->online_whitelist_all_); |
109 | 110 |
110 // Ensure collections in manifest were taken over by the cache rather than | 111 // Ensure collections in manifest were taken over by the cache rather than |
111 // copied. | 112 // copied. |
112 EXPECT_TRUE(manifest.fallback_namespaces.empty()); | 113 EXPECT_TRUE(manifest.fallback_namespaces.empty()); |
113 EXPECT_TRUE(manifest.online_whitelist_namespaces.empty()); | 114 EXPECT_TRUE(manifest.online_whitelist_namespaces.empty()); |
114 } | 115 } |
115 | 116 |
116 TEST(AppCacheTest, FindResponseForRequest) { | 117 TEST(AppCacheTest, FindResponseForRequest) { |
117 MockAppCacheService service; | 118 MockAppCacheService service; |
118 | 119 |
119 const GURL kOnlineNamespaceUrl("http://blah/online_namespace"); | 120 const GURL kOnlineNamespaceUrl("http://blah/online_namespace"); |
120 const GURL kFallbackEntryUrl1("http://blah/fallback_entry1"); | 121 const GURL kFallbackEntryUrl1("http://blah/fallback_entry1"); |
121 const GURL kFallbackNamespaceUrl1("http://blah/fallback_namespace/"); | 122 const GURL kFallbackNamespaceUrl1("http://blah/fallback_namespace/"); |
122 const GURL kFallbackEntryUrl2("http://blah/fallback_entry2"); | 123 const GURL kFallbackEntryUrl2("http://blah/fallback_entry2"); |
123 const GURL kFallbackNamespaceUrl2("http://blah/fallback_namespace/longer"); | 124 const GURL kFallbackNamespaceUrl2("http://blah/fallback_namespace/longer"); |
124 const GURL kManifestUrl("http://blah/manifest"); | 125 const GURL kManifestUrl("http://blah/manifest"); |
125 const GURL kForeignExplicitEntryUrl("http://blah/foreign"); | 126 const GURL kForeignExplicitEntryUrl("http://blah/foreign"); |
126 const GURL kInOnlineNamespaceUrl( | 127 const GURL kInOnlineNamespaceUrl( |
127 "http://blah/online_namespace/network"); | 128 "http://blah/online_namespace/network"); |
128 const GURL kExplicitInOnlineNamespaceUrl( | 129 const GURL kExplicitInOnlineNamespaceUrl( |
129 "http://blah/online_namespace/explicit"); | 130 "http://blah/online_namespace/explicit"); |
130 const GURL kFallbackTestUrl1("http://blah/fallback_namespace/1"); | 131 const GURL kFallbackTestUrl1("http://blah/fallback_namespace/1"); |
131 const GURL kFallbackTestUrl2("http://blah/fallback_namespace/longer2"); | 132 const GURL kFallbackTestUrl2("http://blah/fallback_namespace/longer2"); |
132 const GURL kOnlineNamespaceWithinFallback( | 133 const GURL kInterceptNamespace("http://blah/intercept_namespace/"); |
133 "http://blah/fallback_namespace/1/online"); | 134 const GURL kInterceptNamespaceWithinFallback( |
| 135 "http://blah/fallback_namespace/intercept_namespace/"); |
| 136 const GURL kInterceptNamespaceEntry("http://blah/intercept_entry"); |
| 137 const GURL kOnlineNamespaceWithinOtherNamespaces( |
| 138 "http://blah/fallback_namespace/intercept_namespace/1/online"); |
134 | 139 |
135 const int64 kFallbackResponseId1 = 1; | 140 const int64 kFallbackResponseId1 = 1; |
136 const int64 kFallbackResponseId2 = 2; | 141 const int64 kFallbackResponseId2 = 2; |
137 const int64 kManifestResponseId = 3; | 142 const int64 kManifestResponseId = 3; |
138 const int64 kForeignExplicitResponseId = 4; | 143 const int64 kForeignExplicitResponseId = 4; |
139 const int64 kExplicitInOnlineNamespaceResponseId = 5; | 144 const int64 kExplicitInOnlineNamespaceResponseId = 5; |
| 145 const int64 kInterceptResponseId = 6; |
140 | 146 |
141 Manifest manifest; | 147 Manifest manifest; |
142 manifest.online_whitelist_namespaces.push_back(kOnlineNamespaceUrl); | 148 manifest.online_whitelist_namespaces.push_back(kOnlineNamespaceUrl); |
143 manifest.online_whitelist_namespaces.push_back( | 149 manifest.online_whitelist_namespaces.push_back( |
144 kOnlineNamespaceWithinFallback); | 150 kOnlineNamespaceWithinOtherNamespaces); |
145 manifest.fallback_namespaces.push_back( | 151 manifest.fallback_namespaces.push_back( |
146 FallbackNamespace(kFallbackNamespaceUrl1, kFallbackEntryUrl1)); | 152 Namespace(FALLBACK_NAMESPACE, kFallbackNamespaceUrl1, |
| 153 kFallbackEntryUrl1)); |
147 manifest.fallback_namespaces.push_back( | 154 manifest.fallback_namespaces.push_back( |
148 FallbackNamespace(kFallbackNamespaceUrl2, kFallbackEntryUrl2)); | 155 Namespace(FALLBACK_NAMESPACE, kFallbackNamespaceUrl2, |
| 156 kFallbackEntryUrl2)); |
| 157 manifest.intercept_namespaces.push_back( |
| 158 Namespace(INTERCEPT_NAMESPACE, kInterceptNamespace, |
| 159 kInterceptNamespaceEntry)); |
| 160 manifest.intercept_namespaces.push_back( |
| 161 Namespace(INTERCEPT_NAMESPACE, kInterceptNamespaceWithinFallback, |
| 162 kInterceptNamespaceEntry)); |
149 | 163 |
150 // Create a cache with some namespaces and entries. | 164 // Create a cache with some namespaces and entries. |
151 scoped_refptr<AppCache> cache(new AppCache(&service, 1234)); | 165 scoped_refptr<AppCache> cache(new AppCache(&service, 1234)); |
152 cache->InitializeWithManifest(&manifest); | 166 cache->InitializeWithManifest(&manifest); |
153 cache->AddEntry( | 167 cache->AddEntry( |
154 kFallbackEntryUrl1, | 168 kFallbackEntryUrl1, |
155 AppCacheEntry(AppCacheEntry::FALLBACK, kFallbackResponseId1)); | 169 AppCacheEntry(AppCacheEntry::FALLBACK, kFallbackResponseId1)); |
156 cache->AddEntry( | 170 cache->AddEntry( |
157 kFallbackEntryUrl2, | 171 kFallbackEntryUrl2, |
158 AppCacheEntry(AppCacheEntry::FALLBACK, kFallbackResponseId2)); | 172 AppCacheEntry(AppCacheEntry::FALLBACK, kFallbackResponseId2)); |
159 cache->AddEntry( | 173 cache->AddEntry( |
160 kManifestUrl, | 174 kManifestUrl, |
161 AppCacheEntry(AppCacheEntry::MANIFEST, kManifestResponseId)); | 175 AppCacheEntry(AppCacheEntry::MANIFEST, kManifestResponseId)); |
162 cache->AddEntry( | 176 cache->AddEntry( |
163 kForeignExplicitEntryUrl, | 177 kForeignExplicitEntryUrl, |
164 AppCacheEntry(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, | 178 AppCacheEntry(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, |
165 kForeignExplicitResponseId)); | 179 kForeignExplicitResponseId)); |
166 cache->AddEntry( | 180 cache->AddEntry( |
167 kExplicitInOnlineNamespaceUrl, | 181 kExplicitInOnlineNamespaceUrl, |
168 AppCacheEntry(AppCacheEntry::EXPLICIT, | 182 AppCacheEntry(AppCacheEntry::EXPLICIT, |
169 kExplicitInOnlineNamespaceResponseId)); | 183 kExplicitInOnlineNamespaceResponseId)); |
| 184 cache->AddEntry( |
| 185 kInterceptNamespaceEntry, |
| 186 AppCacheEntry(AppCacheEntry::INTERCEPT, kInterceptResponseId)); |
170 cache->set_complete(true); | 187 cache->set_complete(true); |
171 | 188 |
172 // See that we get expected results from FindResponseForRequest | 189 // See that we get expected results from FindResponseForRequest |
173 | 190 |
174 bool found = false; | 191 bool found = false; |
175 AppCacheEntry entry; | 192 AppCacheEntry entry; |
176 AppCacheEntry fallback_entry; | 193 AppCacheEntry fallback_entry; |
177 GURL fallback_namespace; | 194 GURL fallback_namespace; |
178 bool network_namespace = false; | 195 bool network_namespace = false; |
179 | 196 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 &entry, &fallback_entry, &fallback_namespace, &network_namespace); | 249 &entry, &fallback_entry, &fallback_namespace, &network_namespace); |
233 EXPECT_TRUE(found); | 250 EXPECT_TRUE(found); |
234 EXPECT_FALSE(entry.has_response_id()); | 251 EXPECT_FALSE(entry.has_response_id()); |
235 EXPECT_EQ(kFallbackResponseId2, fallback_entry.response_id()); | 252 EXPECT_EQ(kFallbackResponseId2, fallback_entry.response_id()); |
236 EXPECT_EQ(kFallbackEntryUrl2, | 253 EXPECT_EQ(kFallbackEntryUrl2, |
237 cache->GetFallbackEntryUrl(fallback_namespace)); | 254 cache->GetFallbackEntryUrl(fallback_namespace)); |
238 EXPECT_FALSE(network_namespace); | 255 EXPECT_FALSE(network_namespace); |
239 | 256 |
240 fallback_entry = AppCacheEntry(); // reset | 257 fallback_entry = AppCacheEntry(); // reset |
241 | 258 |
242 found = cache->FindResponseForRequest(kOnlineNamespaceWithinFallback, | 259 found = cache->FindResponseForRequest(kOnlineNamespaceWithinOtherNamespaces, |
243 &entry, &fallback_entry, &fallback_namespace, &network_namespace); | 260 &entry, &fallback_entry, &fallback_namespace, &network_namespace); |
244 EXPECT_TRUE(found); | 261 EXPECT_TRUE(found); |
245 EXPECT_FALSE(entry.has_response_id()); | 262 EXPECT_FALSE(entry.has_response_id()); |
246 EXPECT_FALSE(fallback_entry.has_response_id()); | 263 EXPECT_FALSE(fallback_entry.has_response_id()); |
247 EXPECT_TRUE(network_namespace); | 264 EXPECT_TRUE(network_namespace); |
248 | 265 |
249 fallback_entry = AppCacheEntry(); // reset | 266 fallback_entry = AppCacheEntry(); // reset |
250 | 267 |
251 found = cache->FindResponseForRequest( | 268 found = cache->FindResponseForRequest( |
252 kOnlineNamespaceWithinFallback.Resolve("online_resource"), | 269 kOnlineNamespaceWithinOtherNamespaces.Resolve("online_resource"), |
253 &entry, &fallback_entry, &fallback_namespace, &network_namespace); | 270 &entry, &fallback_entry, &fallback_namespace, &network_namespace); |
254 EXPECT_TRUE(found); | 271 EXPECT_TRUE(found); |
255 EXPECT_FALSE(entry.has_response_id()); | 272 EXPECT_FALSE(entry.has_response_id()); |
256 EXPECT_FALSE(fallback_entry.has_response_id()); | 273 EXPECT_FALSE(fallback_entry.has_response_id()); |
257 EXPECT_TRUE(network_namespace); | 274 EXPECT_TRUE(network_namespace); |
| 275 |
| 276 found = cache->FindResponseForRequest( |
| 277 kInterceptNamespace.Resolve("intercept_me"), |
| 278 &entry, &fallback_entry, &fallback_namespace, &network_namespace); |
| 279 EXPECT_TRUE(found); |
| 280 EXPECT_EQ(kInterceptResponseId, entry.response_id()); |
| 281 EXPECT_FALSE(fallback_entry.has_response_id()); |
| 282 EXPECT_FALSE(network_namespace); |
| 283 |
| 284 entry = AppCacheEntry(); // reset |
| 285 |
| 286 found = cache->FindResponseForRequest( |
| 287 kInterceptNamespaceWithinFallback.Resolve("intercept_me"), |
| 288 &entry, &fallback_entry, &fallback_namespace, &network_namespace); |
| 289 EXPECT_TRUE(found); |
| 290 EXPECT_EQ(kInterceptResponseId, entry.response_id()); |
| 291 EXPECT_FALSE(fallback_entry.has_response_id()); |
| 292 EXPECT_FALSE(network_namespace); |
258 } | 293 } |
259 | 294 |
260 } // namespace appacache | 295 } // namespace appacache |
261 | 296 |
OLD | NEW |