OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |