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

Side by Side Diff: chrome/browser/prerender/prerender_resource_throttle.cc

Issue 425653002: content: ResourceType cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: REBASE Created 6 years, 4 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/prerender/prerender_resource_throttle.h" 5 #include "chrome/browser/prerender/prerender_resource_throttle.h"
6 6
7 #include "chrome/browser/prerender/prerender_final_status.h" 7 #include "chrome/browser/prerender/prerender_final_status.h"
8 #include "chrome/browser/prerender/prerender_manager.h" 8 #include "chrome/browser/prerender/prerender_manager.h"
9 #include "chrome/browser/prerender/prerender_util.h" 9 #include "chrome/browser/prerender/prerender_util.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 controller()->Resume(); 71 controller()->Resume();
72 } 72 }
73 73
74 void PrerenderResourceThrottle::Cancel() { 74 void PrerenderResourceThrottle::Cancel() {
75 controller()->Cancel(); 75 controller()->Cancel();
76 } 76 }
77 77
78 void PrerenderResourceThrottle::WillStartRequestOnUI( 78 void PrerenderResourceThrottle::WillStartRequestOnUI(
79 const base::WeakPtr<PrerenderResourceThrottle>& throttle, 79 const base::WeakPtr<PrerenderResourceThrottle>& throttle,
80 const std::string& method, 80 const std::string& method,
81 ResourceType::Type resource_type, 81 ResourceType resource_type,
82 int render_process_id, 82 int render_process_id,
83 int render_frame_id, 83 int render_frame_id,
84 const GURL& url) { 84 const GURL& url) {
85 bool cancel = false; 85 bool cancel = false;
86 PrerenderContents* prerender_contents = 86 PrerenderContents* prerender_contents =
87 PrerenderContentsFromRenderFrame(render_process_id, render_frame_id); 87 PrerenderContentsFromRenderFrame(render_process_id, render_frame_id);
88 if (prerender_contents) { 88 if (prerender_contents) {
89 // Abort any prerenders that spawn requests that use unsupported HTTP 89 // Abort any prerenders that spawn requests that use unsupported HTTP
90 // methods or schemes. 90 // methods or schemes.
91 if (!PrerenderManager::IsValidHttpMethod(method)) { 91 if (!PrerenderManager::IsValidHttpMethod(method)) {
92 prerender_contents->Destroy(FINAL_STATUS_INVALID_HTTP_METHOD); 92 prerender_contents->Destroy(FINAL_STATUS_INVALID_HTTP_METHOD);
93 cancel = true; 93 cancel = true;
94 } else if (!PrerenderManager::DoesSubresourceURLHaveValidScheme(url)) { 94 } else if (!PrerenderManager::DoesSubresourceURLHaveValidScheme(url)) {
95 prerender_contents->Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME); 95 prerender_contents->Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME);
96 ReportUnsupportedPrerenderScheme(url); 96 ReportUnsupportedPrerenderScheme(url);
97 cancel = true; 97 cancel = true;
98 #if defined(OS_ANDROID) 98 #if defined(OS_ANDROID)
99 } else if (resource_type == ResourceType::FAVICON) { 99 } else if (resource_type == content::RESOURCE_TYPE_FAVICON) {
100 // Delay icon fetching until the contents are getting swapped in 100 // Delay icon fetching until the contents are getting swapped in
101 // to conserve network usage in mobile devices. 101 // to conserve network usage in mobile devices.
102 prerender_contents->AddResourceThrottle(throttle); 102 prerender_contents->AddResourceThrottle(throttle);
103 return; 103 return;
104 #endif 104 #endif
105 } 105 }
106 } 106 }
107 107
108 content::BrowserThread::PostTask( 108 content::BrowserThread::PostTask(
109 content::BrowserThread::IO, 109 content::BrowserThread::IO,
110 FROM_HERE, 110 FROM_HERE,
111 base::Bind(cancel ? &PrerenderResourceThrottle::Cancel : 111 base::Bind(cancel ? &PrerenderResourceThrottle::Cancel :
112 &PrerenderResourceThrottle::Resume, throttle)); 112 &PrerenderResourceThrottle::Resume, throttle));
113 } 113 }
114 114
115 void PrerenderResourceThrottle::WillRedirectRequestOnUI( 115 void PrerenderResourceThrottle::WillRedirectRequestOnUI(
116 const base::WeakPtr<PrerenderResourceThrottle>& throttle, 116 const base::WeakPtr<PrerenderResourceThrottle>& throttle,
117 const std::string& follow_only_when_prerender_shown_header, 117 const std::string& follow_only_when_prerender_shown_header,
118 ResourceType::Type resource_type, 118 ResourceType resource_type,
119 bool async, 119 bool async,
120 int render_process_id, 120 int render_process_id,
121 int render_frame_id, 121 int render_frame_id,
122 const GURL& new_url) { 122 const GURL& new_url) {
123 bool cancel = false; 123 bool cancel = false;
124 PrerenderContents* prerender_contents = 124 PrerenderContents* prerender_contents =
125 PrerenderContentsFromRenderFrame(render_process_id, render_frame_id); 125 PrerenderContentsFromRenderFrame(render_process_id, render_frame_id);
126 if (prerender_contents) { 126 if (prerender_contents) {
127 // Abort any prerenders with requests which redirect to invalid schemes. 127 // Abort any prerenders with requests which redirect to invalid schemes.
128 if (!PrerenderManager::DoesURLHaveValidScheme(new_url)) { 128 if (!PrerenderManager::DoesURLHaveValidScheme(new_url)) {
129 prerender_contents->Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME); 129 prerender_contents->Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME);
130 ReportUnsupportedPrerenderScheme(new_url); 130 ReportUnsupportedPrerenderScheme(new_url);
131 cancel = true; 131 cancel = true;
132 } else if (follow_only_when_prerender_shown_header == "1" && 132 } else if (follow_only_when_prerender_shown_header == "1" &&
133 resource_type != ResourceType::MAIN_FRAME) { 133 resource_type != content::RESOURCE_TYPE_MAIN_FRAME) {
134 // Only defer redirects with the Follow-Only-When-Prerender-Shown 134 // Only defer redirects with the Follow-Only-When-Prerender-Shown
135 // header. Do not defer redirects on main frame loads. 135 // header. Do not defer redirects on main frame loads.
136 if (!async) { 136 if (!async) {
137 // Cancel on deferred synchronous requests. Those will 137 // Cancel on deferred synchronous requests. Those will
138 // indefinitely hang up a renderer process. 138 // indefinitely hang up a renderer process.
139 prerender_contents->Destroy(FINAL_STATUS_BAD_DEFERRED_REDIRECT); 139 prerender_contents->Destroy(FINAL_STATUS_BAD_DEFERRED_REDIRECT);
140 cancel = true; 140 cancel = true;
141 } else { 141 } else {
142 // Defer the redirect until the prerender is used or canceled. 142 // Defer the redirect until the prerender is used or canceled.
143 prerender_contents->AddResourceThrottle(throttle); 143 prerender_contents->AddResourceThrottle(throttle);
(...skipping 14 matching lines...) Expand all
158 if (g_prerender_contents_for_testing) 158 if (g_prerender_contents_for_testing)
159 return g_prerender_contents_for_testing; 159 return g_prerender_contents_for_testing;
160 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( 160 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
161 render_process_id, render_frame_id); 161 render_process_id, render_frame_id);
162 content::WebContents* web_contents = 162 content::WebContents* web_contents =
163 content::WebContents::FromRenderFrameHost(rfh); 163 content::WebContents::FromRenderFrameHost(rfh);
164 return PrerenderContents::FromWebContents(web_contents); 164 return PrerenderContents::FromWebContents(web_contents);
165 } 165 }
166 166
167 } // namespace prerender 167 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_resource_throttle.h ('k') | chrome/browser/prerender/prerender_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698