| 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 <sstream> | 5 #include <sstream> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 waiting_ = true; | 116 waiting_ = true; |
| 117 content::RunMessageLoop(); | 117 content::RunMessageLoop(); |
| 118 waiting_ = false; | 118 waiting_ = false; |
| 119 } | 119 } |
| 120 | 120 |
| 121 private: | 121 private: |
| 122 virtual void OnDownloadCreated(content::DownloadManager* manager, | 122 virtual void OnDownloadCreated(content::DownloadManager* manager, |
| 123 content::DownloadItem* item) OVERRIDE { | 123 content::DownloadItem* item) OVERRIDE { |
| 124 DCHECK_EQ(manager_, manager); | 124 DCHECK_EQ(manager_, manager); |
| 125 if (waiting_) | 125 if (waiting_) |
| 126 MessageLoopForUI::current()->Quit(); | 126 base::MessageLoopForUI::current()->Quit(); |
| 127 } | 127 } |
| 128 | 128 |
| 129 content::DownloadManager* manager_; | 129 content::DownloadManager* manager_; |
| 130 bool waiting_; | 130 bool waiting_; |
| 131 | 131 |
| 132 DISALLOW_COPY_AND_ASSIGN(CreatedObserver); | 132 DISALLOW_COPY_AND_ASSIGN(CreatedObserver); |
| 133 }; | 133 }; |
| 134 | 134 |
| 135 class PercentWaiter : public content::DownloadItem::Observer { | 135 class PercentWaiter : public content::DownloadItem::Observer { |
| 136 public: | 136 public: |
| (...skipping 21 matching lines...) Expand all Loading... |
| 158 | 158 |
| 159 private: | 159 private: |
| 160 virtual void OnDownloadUpdated(content::DownloadItem* item) OVERRIDE { | 160 virtual void OnDownloadUpdated(content::DownloadItem* item) OVERRIDE { |
| 161 DCHECK_EQ(item_, item); | 161 DCHECK_EQ(item_, item); |
| 162 if (!error_ && | 162 if (!error_ && |
| 163 ((prev_percent_ > item_->PercentComplete()) || | 163 ((prev_percent_ > item_->PercentComplete()) || |
| 164 (item_->GetState() == DownloadItem::COMPLETE && | 164 (item_->GetState() == DownloadItem::COMPLETE && |
| 165 (item_->PercentComplete() != 100)))) { | 165 (item_->PercentComplete() != 100)))) { |
| 166 error_ = true; | 166 error_ = true; |
| 167 if (waiting_) | 167 if (waiting_) |
| 168 MessageLoopForUI::current()->Quit(); | 168 base::MessageLoopForUI::current()->Quit(); |
| 169 } | 169 } |
| 170 if (item_->GetState() == DownloadItem::COMPLETE && waiting_) | 170 if (item_->GetState() == DownloadItem::COMPLETE && waiting_) |
| 171 MessageLoopForUI::current()->Quit(); | 171 base::MessageLoopForUI::current()->Quit(); |
| 172 } | 172 } |
| 173 | 173 |
| 174 virtual void OnDownloadDestroyed(content::DownloadItem* item) OVERRIDE { | 174 virtual void OnDownloadDestroyed(content::DownloadItem* item) OVERRIDE { |
| 175 DCHECK_EQ(item_, item); | 175 DCHECK_EQ(item_, item); |
| 176 item_->RemoveObserver(this); | 176 item_->RemoveObserver(this); |
| 177 item_ = NULL; | 177 item_ = NULL; |
| 178 } | 178 } |
| 179 | 179 |
| 180 content::DownloadItem* item_; | 180 content::DownloadItem* item_; |
| 181 bool waiting_; | 181 bool waiting_; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 *results = results_.Pass(); | 213 *results = results_.Pass(); |
| 214 } | 214 } |
| 215 return result_valid_; | 215 return result_valid_; |
| 216 } | 216 } |
| 217 | 217 |
| 218 private: | 218 private: |
| 219 void OnQueryDownloadsComplete( | 219 void OnQueryDownloadsComplete( |
| 220 scoped_ptr<std::vector<history::DownloadRow> > entries) { | 220 scoped_ptr<std::vector<history::DownloadRow> > entries) { |
| 221 result_valid_ = true; | 221 result_valid_ = true; |
| 222 results_ = entries.Pass(); | 222 results_ = entries.Pass(); |
| 223 MessageLoopForUI::current()->Quit(); | 223 base::MessageLoopForUI::current()->Quit(); |
| 224 } | 224 } |
| 225 | 225 |
| 226 Profile* profile_; | 226 Profile* profile_; |
| 227 scoped_ptr<std::vector<history::DownloadRow> > results_; | 227 scoped_ptr<std::vector<history::DownloadRow> > results_; |
| 228 bool result_valid_; | 228 bool result_valid_; |
| 229 CancelableRequestConsumer callback_consumer_; | 229 CancelableRequestConsumer callback_consumer_; |
| 230 | 230 |
| 231 DISALLOW_COPY_AND_ASSIGN(DownloadsHistoryDataCollector); | 231 DISALLOW_COPY_AND_ASSIGN(DownloadsHistoryDataCollector); |
| 232 }; | 232 }; |
| 233 | 233 |
| 234 // Mock that simulates a permissions dialog where the user denies | 234 // Mock that simulates a permissions dialog where the user denies |
| 235 // permission to install. TODO(skerner): This could be shared with | 235 // permission to install. TODO(skerner): This could be shared with |
| 236 // extensions tests. Find a common place for this class. | 236 // extensions tests. Find a common place for this class. |
| 237 class MockAbortExtensionInstallPrompt : public ExtensionInstallPrompt { | 237 class MockAbortExtensionInstallPrompt : public ExtensionInstallPrompt { |
| 238 public: | 238 public: |
| 239 MockAbortExtensionInstallPrompt() : | 239 MockAbortExtensionInstallPrompt() : |
| 240 ExtensionInstallPrompt(NULL) { | 240 ExtensionInstallPrompt(NULL) { |
| 241 } | 241 } |
| 242 | 242 |
| 243 // Simulate a user abort on an extension installation. | 243 // Simulate a user abort on an extension installation. |
| 244 virtual void ConfirmInstall( | 244 virtual void ConfirmInstall( |
| 245 Delegate* delegate, | 245 Delegate* delegate, |
| 246 const Extension* extension, | 246 const Extension* extension, |
| 247 const ShowDialogCallback& show_dialog_callback) OVERRIDE { | 247 const ShowDialogCallback& show_dialog_callback) OVERRIDE { |
| 248 delegate->InstallUIAbort(true); | 248 delegate->InstallUIAbort(true); |
| 249 MessageLoopForUI::current()->Quit(); | 249 base::MessageLoopForUI::current()->Quit(); |
| 250 } | 250 } |
| 251 | 251 |
| 252 virtual void OnInstallSuccess(const Extension* extension, | 252 virtual void OnInstallSuccess(const Extension* extension, |
| 253 SkBitmap* icon) OVERRIDE { | 253 SkBitmap* icon) OVERRIDE { |
| 254 } | 254 } |
| 255 virtual void OnInstallFailure( | 255 virtual void OnInstallFailure( |
| 256 const extensions::CrxInstallerError& error) OVERRIDE { | 256 const extensions::CrxInstallerError& error) OVERRIDE { |
| 257 } | 257 } |
| 258 }; | 258 }; |
| 259 | 259 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 } | 342 } |
| 343 | 343 |
| 344 virtual void OnDownloadStored( | 344 virtual void OnDownloadStored( |
| 345 content::DownloadItem* item, | 345 content::DownloadItem* item, |
| 346 const history::DownloadRow& info) OVERRIDE { | 346 const history::DownloadRow& info) OVERRIDE { |
| 347 if (!callback_.is_null() && (!callback_.Run(info))) | 347 if (!callback_.is_null() && (!callback_.Run(info))) |
| 348 return; | 348 return; |
| 349 | 349 |
| 350 seen_stored_ = true; | 350 seen_stored_ = true; |
| 351 if (waiting_) | 351 if (waiting_) |
| 352 MessageLoopForUI::current()->Quit(); | 352 base::MessageLoopForUI::current()->Quit(); |
| 353 } | 353 } |
| 354 | 354 |
| 355 virtual void OnDownloadHistoryDestroyed() OVERRIDE { | 355 virtual void OnDownloadHistoryDestroyed() OVERRIDE { |
| 356 DownloadServiceFactory::GetForProfile(profile_)-> | 356 DownloadServiceFactory::GetForProfile(profile_)-> |
| 357 GetDownloadHistory()->RemoveObserver(this); | 357 GetDownloadHistory()->RemoveObserver(this); |
| 358 } | 358 } |
| 359 | 359 |
| 360 void WaitForStored() { | 360 void WaitForStored() { |
| 361 if (seen_stored_) | 361 if (seen_stored_) |
| 362 return; | 362 return; |
| (...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1000 download_crx_util::SetMockInstallPromptForTesting( | 1000 download_crx_util::SetMockInstallPromptForTesting( |
| 1001 new MockAutoConfirmExtensionInstallPrompt( | 1001 new MockAutoConfirmExtensionInstallPrompt( |
| 1002 browser()->tab_strip_model()->GetActiveWebContents())); | 1002 browser()->tab_strip_model()->GetActiveWebContents())); |
| 1003 } | 1003 } |
| 1004 | 1004 |
| 1005 private: | 1005 private: |
| 1006 static void EnsureNoPendingDownloadJobsOnIO(bool* result) { | 1006 static void EnsureNoPendingDownloadJobsOnIO(bool* result) { |
| 1007 if (URLRequestSlowDownloadJob::NumberOutstandingRequests()) | 1007 if (URLRequestSlowDownloadJob::NumberOutstandingRequests()) |
| 1008 *result = false; | 1008 *result = false; |
| 1009 BrowserThread::PostTask( | 1009 BrowserThread::PostTask( |
| 1010 BrowserThread::UI, FROM_HERE, MessageLoop::QuitClosure()); | 1010 BrowserThread::UI, FROM_HERE, base::MessageLoop::QuitClosure()); |
| 1011 } | 1011 } |
| 1012 | 1012 |
| 1013 // Location of the test data. | 1013 // Location of the test data. |
| 1014 base::FilePath test_dir_; | 1014 base::FilePath test_dir_; |
| 1015 | 1015 |
| 1016 // Location of the downloads directory for these tests | 1016 // Location of the downloads directory for these tests |
| 1017 base::ScopedTempDir downloads_directory_; | 1017 base::ScopedTempDir downloads_directory_; |
| 1018 | 1018 |
| 1019 scoped_ptr<DownloadTestFileActivityObserver> file_activity_observer_; | 1019 scoped_ptr<DownloadTestFileActivityObserver> file_activity_observer_; |
| 1020 }; | 1020 }; |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1179 &web_contents->GetController()), | 1179 &web_contents->GetController()), |
| 1180 1); | 1180 1); |
| 1181 bool download_assempted; | 1181 bool download_assempted; |
| 1182 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 1182 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
| 1183 browser()->tab_strip_model()->GetActiveWebContents(), | 1183 browser()->tab_strip_model()->GetActiveWebContents(), |
| 1184 "window.domAutomationController.send(startDownload());", | 1184 "window.domAutomationController.send(startDownload());", |
| 1185 &download_assempted)); | 1185 &download_assempted)); |
| 1186 ASSERT_TRUE(download_assempted); | 1186 ASSERT_TRUE(download_assempted); |
| 1187 observer.WaitForObservation( | 1187 observer.WaitForObservation( |
| 1188 base::Bind(&content::RunMessageLoop), | 1188 base::Bind(&content::RunMessageLoop), |
| 1189 base::Bind(&MessageLoop::Quit, | 1189 base::Bind(&base::MessageLoop::Quit, |
| 1190 base::Unretained(MessageLoopForUI::current()))); | 1190 base::Unretained(base::MessageLoopForUI::current()))); |
| 1191 | 1191 |
| 1192 // Check that we did not download the file. | 1192 // Check that we did not download the file. |
| 1193 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1193 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1194 base::FilePath file_path(DestinationFile(browser(), file)); | 1194 base::FilePath file_path(DestinationFile(browser(), file)); |
| 1195 EXPECT_FALSE(file_util::PathExists(file_path)); | 1195 EXPECT_FALSE(file_util::PathExists(file_path)); |
| 1196 | 1196 |
| 1197 // Check state. | 1197 // Check state. |
| 1198 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 1198 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 1199 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 1199 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
| 1200 | 1200 |
| (...skipping 1735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2936 scoped_ptr<content::DownloadTestObserver> observer( | 2936 scoped_ptr<content::DownloadTestObserver> observer( |
| 2937 DangerousDownloadWaiter( | 2937 DangerousDownloadWaiter( |
| 2938 browser(), 1, | 2938 browser(), 1, |
| 2939 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); | 2939 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); |
| 2940 ui_test_utils::NavigateToURL(browser(), url); | 2940 ui_test_utils::NavigateToURL(browser(), url); |
| 2941 observer->WaitForFinished(); | 2941 observer->WaitForFinished(); |
| 2942 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::CANCELLED)); | 2942 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::CANCELLED)); |
| 2943 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 2943 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 2944 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 2944 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
| 2945 } | 2945 } |
| OLD | NEW |