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

Side by Side Diff: content/browser/android/download_controller_android_impl.cc

Issue 11592012: Fix NULL pointer usage, it is P1 crash bug. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/android/download_controller_android_impl.h" 5 #include "content/browser/android/download_controller_android_impl.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 BrowserThread::IO, FROM_HERE, 99 BrowserThread::IO, FROM_HERE,
100 base::Bind(&DownloadControllerAndroidImpl::PrepareDownloadInfo, 100 base::Bind(&DownloadControllerAndroidImpl::PrepareDownloadInfo,
101 base::Unretained(this), global_id, 101 base::Unretained(this), global_id,
102 render_process_id, 102 render_process_id,
103 render_view_host->GetRoutingID())); 103 render_view_host->GetRoutingID()));
104 } 104 }
105 105
106 void DownloadControllerAndroidImpl::PrepareDownloadInfo( 106 void DownloadControllerAndroidImpl::PrepareDownloadInfo(
107 const GlobalRequestID& global_id, 107 const GlobalRequestID& global_id,
108 int render_process_id, int render_view_id) { 108 int render_process_id, int render_view_id) {
109 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 109 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
Philippe 2012/12/17 15:20:06 It's good that we have this DCHECK here. I would a
felipeg 2012/12/17 15:21:33 Done.
110 110
111 net::URLRequest* request = 111 net::URLRequest* request =
112 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); 112 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id);
113 DCHECK(request) << "Request to download not found."; 113 DCHECK(request) << "Request to download not found.";
Philippe 2012/12/17 15:20:06 Nit: I would remove these DCHECKs now that we are
felipeg 2012/12/17 15:21:33 Done.
114 if (!request) {
115 LOG(ERROR) << "Request to download not found.";
116 return;
117 }
114 118
115 DownloadInfoAndroid info_android(request); 119 DownloadInfoAndroid info_android(request);
116 120
117 net::CookieStore* cookie_store = request->context()->cookie_store(); 121 net::CookieStore* cookie_store = request->context()->cookie_store();
118 if (cookie_store) { 122 if (cookie_store) {
119 net::CookieMonster* cookie_monster = cookie_store->GetCookieMonster(); 123 net::CookieMonster* cookie_monster = cookie_store->GetCookieMonster();
120 if (cookie_monster) { 124 if (cookie_monster) {
121 cookie_monster->GetAllCookiesForURLAsync( 125 cookie_monster->GetAllCookiesForURLAsync(
122 request->url(), 126 request->url(),
123 base::Bind(&DownloadControllerAndroidImpl::CheckPolicyAndLoadCookies, 127 base::Bind(&DownloadControllerAndroidImpl::CheckPolicyAndLoadCookies,
124 base::Unretained(this), info_android, render_process_id, 128 base::Unretained(this), info_android, render_process_id,
125 render_view_id, global_id)); 129 render_view_id, global_id));
126 } else { 130 } else {
127 DoLoadCookies( 131 DoLoadCookies(
128 info_android, render_process_id, render_view_id, global_id); 132 info_android, render_process_id, render_view_id, global_id);
129 } 133 }
130 } else { 134 } else {
131 // Can't get any cookies, start android download. 135 // Can't get any cookies, start android download.
132 StartAndroidDownload(info_android, render_process_id, render_view_id); 136 StartAndroidDownload(info_android, render_process_id, render_view_id);
133 } 137 }
134 } 138 }
135 139
136 void DownloadControllerAndroidImpl::CheckPolicyAndLoadCookies( 140 void DownloadControllerAndroidImpl::CheckPolicyAndLoadCookies(
137 const DownloadInfoAndroid& info, int render_process_id, 141 const DownloadInfoAndroid& info, int render_process_id,
138 int render_view_id, const GlobalRequestID& global_id, 142 int render_view_id, const GlobalRequestID& global_id,
139 const net::CookieList& cookie_list) { 143 const net::CookieList& cookie_list) {
140 net::URLRequest* request = 144 net::URLRequest* request =
141 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); 145 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id);
142 DCHECK(request) << "Request to download not found."; 146 DCHECK(request) << "Request to download not found.";
147 if (!request) {
148 LOG(ERROR) << "Request to download not found.";
149 return;
150 }
143 151
144 if (request->context()->network_delegate()->CanGetCookies( 152 if (request->context()->network_delegate()->CanGetCookies(
145 *request, cookie_list)) { 153 *request, cookie_list)) {
146 DoLoadCookies(info, render_process_id, render_view_id, global_id); 154 DoLoadCookies(info, render_process_id, render_view_id, global_id);
147 } else { 155 } else {
148 StartAndroidDownload(info, render_process_id, render_view_id); 156 StartAndroidDownload(info, render_process_id, render_view_id);
149 } 157 }
150 } 158 }
151 159
152 void DownloadControllerAndroidImpl::DoLoadCookies( 160 void DownloadControllerAndroidImpl::DoLoadCookies(
153 const DownloadInfoAndroid& info, int render_process_id, 161 const DownloadInfoAndroid& info, int render_process_id,
154 int render_view_id, const GlobalRequestID& global_id) { 162 int render_view_id, const GlobalRequestID& global_id) {
155 net::CookieOptions options; 163 net::CookieOptions options;
156 options.set_include_httponly(); 164 options.set_include_httponly();
157 165
158 net::URLRequest* request = 166 net::URLRequest* request =
159 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); 167 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id);
160 DCHECK(request) << "Request to download not found."; 168 DCHECK(request) << "Request to download not found.";
169 if (!request) {
170 LOG(ERROR) << "Request to download not found.";
171 return;
172 }
161 173
162 request->context()->cookie_store()->GetCookiesWithOptionsAsync( 174 request->context()->cookie_store()->GetCookiesWithOptionsAsync(
163 info.url, options, 175 info.url, options,
164 base::Bind(&DownloadControllerAndroidImpl::OnCookieResponse, 176 base::Bind(&DownloadControllerAndroidImpl::OnCookieResponse,
165 base::Unretained(this), info, render_process_id, 177 base::Unretained(this), info, render_process_id,
166 render_view_id)); 178 render_view_id));
167 } 179 }
168 180
169 void DownloadControllerAndroidImpl::OnCookieResponse( 181 void DownloadControllerAndroidImpl::OnCookieResponse(
170 DownloadInfoAndroid download_info, 182 DownloadInfoAndroid download_info,
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 referer = referer_url.spec(); 346 referer = referer_url.spec();
335 if (!request->url_chain().empty()) { 347 if (!request->url_chain().empty()) {
336 original_url = request->url_chain().front(); 348 original_url = request->url_chain().front();
337 url = request->url_chain().back(); 349 url = request->url_chain().back();
338 } 350 }
339 } 351 }
340 352
341 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {} 353 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {}
342 354
343 } // namespace content 355 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698