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

Side by Side Diff: content/public/test/download_test_observer.cc

Issue 14947007: [Downloads] Allow acquiring dangerous download file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename methods and get rid of Delete() Created 7 years, 7 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/public/test/download_test_observer.h" 5 #include "content/public/test/download_test_observer.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/stl_util.h" 12 #include "base/stl_util.h"
13 #include "base/threading/sequenced_worker_pool.h" 13 #include "base/threading/sequenced_worker_pool.h"
14 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
15 #include "content/public/browser/download_url_parameters.h" 15 #include "content/public/browser/download_url_parameters.h"
16 #include "content/public/test/test_utils.h" 16 #include "content/public/test/test_utils.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 namespace content { 19 namespace content {
20 20
21 namespace {
22
23 // These functions take scoped_refptr's to DownloadManager because they
24 // are posted to message queues, and hence may execute arbitrarily after
25 // their actual posting. Once posted, there is no connection between
26 // these routines and the DownloadTestObserver class from which
27 // they came, so the DownloadTestObserver's reference to the
28 // DownloadManager cannot be counted on to keep the DownloadManager around.
29
30 // Fake user click on "Accept".
31 void AcceptDangerousDownload(scoped_refptr<DownloadManager> download_manager,
32 int32 download_id) {
33 DownloadItem* download = download_manager->GetDownload(download_id);
34 if (download && (download->GetState() == DownloadItem::IN_PROGRESS))
35 download->ValidateDangerousDownload();
36 }
37
38 // Fake user click on "Deny".
39 void DenyDangerousDownload(scoped_refptr<DownloadManager> download_manager,
40 int32 download_id) {
41 DownloadItem* download = download_manager->GetDownload(download_id);
42 if (download && (download->GetState() == DownloadItem::IN_PROGRESS))
43 download->Remove();
44 }
45
46 } // namespace
47
21 DownloadUpdatedObserver::DownloadUpdatedObserver( 48 DownloadUpdatedObserver::DownloadUpdatedObserver(
22 DownloadItem* item, DownloadUpdatedObserver::EventFilter filter) 49 DownloadItem* item, DownloadUpdatedObserver::EventFilter filter)
23 : item_(item), 50 : item_(item),
24 filter_(filter), 51 filter_(filter),
25 waiting_(false), 52 waiting_(false),
26 event_seen_(false) { 53 event_seen_(false) {
27 item->AddObserver(this); 54 item->AddObserver(this);
28 } 55 }
29 56
30 DownloadUpdatedObserver::~DownloadUpdatedObserver() { 57 DownloadUpdatedObserver::~DownloadUpdatedObserver() {
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 downloads_observed_.erase(it); 161 downloads_observed_.erase(it);
135 download->RemoveObserver(this); 162 download->RemoveObserver(this);
136 } 163 }
137 164
138 void DownloadTestObserver::OnDownloadUpdated(DownloadItem* download) { 165 void DownloadTestObserver::OnDownloadUpdated(DownloadItem* download) {
139 // Real UI code gets the user's response after returning from the observer. 166 // Real UI code gets the user's response after returning from the observer.
140 if (download->IsDangerous() && 167 if (download->IsDangerous() &&
141 !ContainsKey(dangerous_downloads_seen_, download->GetId())) { 168 !ContainsKey(dangerous_downloads_seen_, download->GetId())) {
142 dangerous_downloads_seen_.insert(download->GetId()); 169 dangerous_downloads_seen_.insert(download->GetId());
143 170
144 // Calling DangerousDownloadValidated() at this point will 171 // Calling ValidateDangerousDownload() at this point will
145 // cause the download to be completed twice. Do what the real UI 172 // cause the download to be completed twice. Do what the real UI
146 // code does: make the call as a delayed task. 173 // code does: make the call as a delayed task.
147 switch (dangerous_download_action_) { 174 switch (dangerous_download_action_) {
148 case ON_DANGEROUS_DOWNLOAD_ACCEPT: 175 case ON_DANGEROUS_DOWNLOAD_ACCEPT:
149 // Fake user click on "Accept". Delay the actual click, as the 176 // Fake user click on "Accept". Delay the actual click, as the
150 // real UI would. 177 // real UI would.
151 BrowserThread::PostTask( 178 BrowserThread::PostTask(
152 BrowserThread::UI, FROM_HERE, 179 BrowserThread::UI, FROM_HERE,
153 base::Bind(&DownloadTestObserver::AcceptDangerousDownload, 180 base::Bind(&DownloadTestObserver::AcceptDangerousDownload,
154 weak_factory_.GetWeakPtr(), 181 weak_factory_.GetWeakPtr(),
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 base::MessageLoopForUI::current()->Quit(); 242 base::MessageLoopForUI::current()->Quit();
216 } 243 }
217 244
218 void DownloadTestObserver::AcceptDangerousDownload(int32 download_id) { 245 void DownloadTestObserver::AcceptDangerousDownload(int32 download_id) {
219 // Download manager was shutdown before the UI thread could accept the 246 // Download manager was shutdown before the UI thread could accept the
220 // download. 247 // download.
221 if (!download_manager_) 248 if (!download_manager_)
222 return; 249 return;
223 DownloadItem* download = download_manager_->GetDownload(download_id); 250 DownloadItem* download = download_manager_->GetDownload(download_id);
224 if (download && (download->GetState() == DownloadItem::IN_PROGRESS)) 251 if (download && (download->GetState() == DownloadItem::IN_PROGRESS))
225 download->DangerousDownloadValidated(); 252 download->ValidateDangerousDownload();
226 } 253 }
227 254
228 void DownloadTestObserver::DenyDangerousDownload(int32 download_id) { 255 void DownloadTestObserver::DenyDangerousDownload(int32 download_id) {
229 // Download manager was shutdown before the UI thread could deny the 256 // Download manager was shutdown before the UI thread could deny the
230 // download. 257 // download.
231 if (!download_manager_) 258 if (!download_manager_)
232 return; 259 return;
233 DownloadItem* download = download_manager_->GetDownload(download_id); 260 DownloadItem* download = download_manager_->GetDownload(download_id);
234 if (download && (download->GetState() == DownloadItem::IN_PROGRESS)) { 261 if (download && (download->GetState() == DownloadItem::IN_PROGRESS)) {
235 download->Cancel(true); 262 download->Remove();
236 download->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD);
237 } 263 }
238 } 264 }
239 265
240 DownloadTestObserverTerminal::DownloadTestObserverTerminal( 266 DownloadTestObserverTerminal::DownloadTestObserverTerminal(
241 DownloadManager* download_manager, 267 DownloadManager* download_manager,
242 size_t wait_count, 268 size_t wait_count,
243 DangerousDownloadAction dangerous_download_action) 269 DangerousDownloadAction dangerous_download_action)
244 : DownloadTestObserver(download_manager, 270 : DownloadTestObserver(download_manager,
245 wait_count, 271 wait_count,
246 dangerous_download_action) { 272 dangerous_download_action) {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 base::MessageLoopForUI::current()->Quit(); 447 base::MessageLoopForUI::current()->Quit();
422 } 448 }
423 449
424 const DownloadUrlParameters::OnStartedCallback 450 const DownloadUrlParameters::OnStartedCallback
425 DownloadTestItemCreationObserver::callback() { 451 DownloadTestItemCreationObserver::callback() {
426 return base::Bind( 452 return base::Bind(
427 &DownloadTestItemCreationObserver::DownloadItemCreationCallback, this); 453 &DownloadTestItemCreationObserver::DownloadItemCreationCallback, this);
428 } 454 }
429 455
430 } // namespace content 456 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698