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

Side by Side Diff: webkit/appcache/web_application_cache_host_impl.cc

Issue 6727006: Select a more appropiate appcache based on the opener or the parent of the new document. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 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
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/appcache/web_application_cache_host_impl.h" 5 #include "webkit/appcache/web_application_cache_host_impl.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/id_map.h" 8 #include "base/id_map.h"
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 return url.ReplaceComponents(replacements); 46 return url.ReplaceComponents(replacements);
47 } 47 }
48 48
49 } // anon namespace 49 } // anon namespace
50 50
51 WebApplicationCacheHostImpl* WebApplicationCacheHostImpl::FromId(int id) { 51 WebApplicationCacheHostImpl* WebApplicationCacheHostImpl::FromId(int id) {
52 return g_hosts_map.Get().Lookup(id); 52 return g_hosts_map.Get().Lookup(id);
53 } 53 }
54 54
55 WebApplicationCacheHostImpl* WebApplicationCacheHostImpl::FromFrame( 55 WebApplicationCacheHostImpl* WebApplicationCacheHostImpl::FromFrame(
56 WebFrame* frame) { 56 const WebFrame* frame) {
57 if (!frame) 57 if (!frame)
58 return NULL; 58 return NULL;
59 WebDataSource* data_source = frame->dataSource(); 59 WebDataSource* data_source = frame->dataSource();
60 if (!data_source) 60 if (!data_source)
61 return NULL; 61 return NULL;
62 return static_cast<WebApplicationCacheHostImpl*> 62 return static_cast<WebApplicationCacheHostImpl*>
63 (data_source->applicationCacheHost()); 63 (data_source->applicationCacheHost());
64 } 64 }
65 65
66 WebApplicationCacheHostImpl::WebApplicationCacheHostImpl( 66 WebApplicationCacheHostImpl::WebApplicationCacheHostImpl(
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 WebURLRequest& request, const WebFrame* frame) { 159 WebURLRequest& request, const WebFrame* frame) {
160 request.setAppCacheHostID(host_id_); 160 request.setAppCacheHostID(host_id_);
161 161
162 original_main_resource_url_ = ClearUrlRef(request.url()); 162 original_main_resource_url_ = ClearUrlRef(request.url());
163 163
164 std::string method = request.httpMethod().utf8(); 164 std::string method = request.httpMethod().utf8();
165 is_get_method_ = (method == kHttpGETMethod); 165 is_get_method_ = (method == kHttpGETMethod);
166 DCHECK(method == StringToUpperASCII(method)); 166 DCHECK(method == StringToUpperASCII(method));
167 167
168 if (frame) { 168 if (frame) {
169 if (WebApplicationCacheHostImpl* parent = FromFrame(frame->parent())) 169 const WebFrame* spawning_frame = frame->parent();
170 backend_->SetSpawningHostId(host_id_, parent->host_id()); 170 if (!spawning_frame)
171 else if (WebApplicationCacheHostImpl* opener = FromFrame(frame->opener())) 171 spawning_frame = frame->opener();
172 backend_->SetSpawningHostId(host_id_, opener->host_id()); 172 if (!spawning_frame)
173 spawning_frame = frame;
174
175 WebApplicationCacheHostImpl* spawning_host = FromFrame(spawning_frame);
176 if (spawning_host && (spawning_host != this))
177 backend_->SetSpawningHostId(host_id_, spawning_host->host_id());
173 } 178 }
174 } 179 }
175 180
176 void WebApplicationCacheHostImpl::willStartSubResourceRequest( 181 void WebApplicationCacheHostImpl::willStartSubResourceRequest(
177 WebURLRequest& request) { 182 WebURLRequest& request) {
178 request.setAppCacheHostID(host_id_); 183 request.setAppCacheHostID(host_id_);
179 } 184 }
180 185
181 void WebApplicationCacheHostImpl::selectCacheWithoutManifest() { 186 void WebApplicationCacheHostImpl::selectCacheWithoutManifest() {
182 if (was_select_cache_called_) 187 if (was_select_cache_called_)
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 web_resources[i].isExplicit = resource_infos[i].is_explicit; 314 web_resources[i].isExplicit = resource_infos[i].is_explicit;
310 web_resources[i].isManifest = resource_infos[i].is_manifest; 315 web_resources[i].isManifest = resource_infos[i].is_manifest;
311 web_resources[i].isForeign = resource_infos[i].is_foreign; 316 web_resources[i].isForeign = resource_infos[i].is_foreign;
312 web_resources[i].isFallback = resource_infos[i].is_fallback; 317 web_resources[i].isFallback = resource_infos[i].is_fallback;
313 web_resources[i].url = resource_infos[i].url; 318 web_resources[i].url = resource_infos[i].url;
314 } 319 }
315 resources->swap(web_resources); 320 resources->swap(web_resources);
316 } 321 }
317 322
318 } // appcache namespace 323 } // appcache namespace
OLDNEW
« webkit/appcache/appcache_host.h ('K') | « webkit/appcache/web_application_cache_host_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698