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

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

Issue 13649009: Android: Use a ResourceThrottle to intercept GET downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 } 72 }
73 } 73 }
74 74
75 // Initialize references to Java object. 75 // Initialize references to Java object.
76 void DownloadControllerAndroidImpl::Init(JNIEnv* env, jobject obj) { 76 void DownloadControllerAndroidImpl::Init(JNIEnv* env, jobject obj) {
77 java_object_ = new JavaObject; 77 java_object_ = new JavaObject;
78 java_object_->obj = env->NewWeakGlobalRef(obj); 78 java_object_->obj = env->NewWeakGlobalRef(obj);
79 } 79 }
80 80
81 void DownloadControllerAndroidImpl::CreateGETDownload( 81 void DownloadControllerAndroidImpl::CreateGETDownload(
82 RenderViewHost* render_view_host, 82 int render_process_id, int render_view_id, int request_id) {
83 int request_id) { 83 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
85 int render_process_id = render_view_host->GetProcess()->GetID();
86 GlobalRequestID global_id(render_process_id, request_id); 84 GlobalRequestID global_id(render_process_id, request_id);
87 85
88 // We are yielding the UI thread and render_view_host may go away by 86 // We are yielding the UI thread and render_view_host may go away by
89 // the time we come back. Pass along render_process_id and render_view_id 87 // the time we come back. Pass along render_process_id and render_view_id
90 // to retrieve it later (if it still exists). 88 // to retrieve it later (if it still exists).
91 GetDownloadInfoCB cb = base::Bind( 89 GetDownloadInfoCB cb = base::Bind(
92 &DownloadControllerAndroidImpl::StartAndroidDownload, 90 &DownloadControllerAndroidImpl::StartAndroidDownload,
93 base::Unretained(this), render_process_id, 91 base::Unretained(this), render_process_id,
94 render_view_host->GetRoutingID()); 92 render_view_id);
95 BrowserThread::PostTask( 93
96 BrowserThread::IO, FROM_HERE, 94 PrepareDownloadInfo(
97 base::Bind( 95 global_id,
98 &DownloadControllerAndroidImpl::PrepareDownloadInfo, 96 base::Bind(&DownloadControllerAndroidImpl::StartDownloadOnUIThread,
99 base::Unretained(this), global_id, 97 base::Unretained(this), cb));
100 base::Bind(&DownloadControllerAndroidImpl::StartDownloadOnUIThread,
101 base::Unretained(this), cb)));
102 } 98 }
103 99
104 void DownloadControllerAndroidImpl::PrepareDownloadInfo( 100 void DownloadControllerAndroidImpl::PrepareDownloadInfo(
105 const GlobalRequestID& global_id, 101 const GlobalRequestID& global_id,
106 const GetDownloadInfoCB& callback) { 102 const GetDownloadInfoCB& callback) {
107 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 103 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
108 104
109 net::URLRequest* request = 105 net::URLRequest* request =
110 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); 106 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id);
111 if (!request) { 107 if (!request) {
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 referer = referer_url.spec(); 333 referer = referer_url.spec();
338 if (!request->url_chain().empty()) { 334 if (!request->url_chain().empty()) {
339 original_url = request->url_chain().front(); 335 original_url = request->url_chain().front();
340 url = request->url_chain().back(); 336 url = request->url_chain().back();
341 } 337 }
342 } 338 }
343 339
344 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {} 340 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {}
345 341
346 } // namespace content 342 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698