| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/download/download_ui_controller.h" | 5 #include "chrome/browser/download/download_ui_controller.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/callback.h" | 11 #include "base/callback.h" |
| 12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
| 14 #include "base/memory/ref_counted.h" | 14 #include "base/memory/ref_counted.h" |
| 15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
| 16 #include "base/observer_list.h" | 16 #include "base/observer_list.h" |
| 17 #include "chrome/browser/download/download_history.h" | 17 #include "chrome/browser/download/download_history.h" |
| 18 #include "chrome/browser/download/download_service_factory.h" | 18 #include "chrome/browser/download/download_service_factory.h" |
| 19 #include "chrome/browser/download/download_service_impl.h" | 19 #include "chrome/browser/download/download_service_impl.h" |
| 20 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
| 21 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 21 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 22 #include "components/history/core/browser/download_row.h" | 22 #include "components/history/core/browser/download_row.h" |
| 23 #include "content/public/test/mock_download_item.h" | 23 #include "content/public/test/mock_download_item.h" |
| 24 #include "content/public/test/mock_download_manager.h" | 24 #include "content/public/test/mock_download_manager.h" |
| 25 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
| 26 #include "testing/gmock_mutant.h" |
| 26 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 27 | 28 |
| 28 using content::MockDownloadItem; | 29 using content::MockDownloadItem; |
| 29 using content::MockDownloadManager; | 30 using content::MockDownloadManager; |
| 30 using history::HistoryService; | 31 using history::HistoryService; |
| 31 using testing::AnyNumber; | 32 using testing::AnyNumber; |
| 32 using testing::Assign; | 33 using testing::Assign; |
| 34 using testing::CreateFunctor; |
| 33 using testing::Return; | 35 using testing::Return; |
| 34 using testing::ReturnRefOfCopy; | 36 using testing::ReturnRefOfCopy; |
| 35 using testing::SaveArg; | 37 using testing::SaveArg; |
| 36 using testing::_; | 38 using testing::_; |
| 37 | 39 |
| 38 namespace { | 40 namespace { |
| 39 | 41 |
| 40 // A DownloadUIController::Delegate that stores the DownloadItem* for the last | 42 // A DownloadUIController::Delegate that stores the DownloadItem* for the last |
| 41 // download that was sent to the UI. | 43 // download that was sent to the UI. |
| 42 class TestDelegate : public DownloadUIController::Delegate { | 44 class TestDelegate : public DownloadUIController::Delegate { |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 // DownloadHistory will immediately try to create a download using the info | 336 // DownloadHistory will immediately try to create a download using the info |
| 335 // we push through the query callback. When DownloadManager::CreateDownload | 337 // we push through the query callback. When DownloadManager::CreateDownload |
| 336 // is called, we need to first invoke the OnDownloadCreated callback for | 338 // is called, we need to first invoke the OnDownloadCreated callback for |
| 337 // DownloadHistory before returning the DownloadItem since that's the | 339 // DownloadHistory before returning the DownloadItem since that's the |
| 338 // sequence of events expected by DownloadHistory. | 340 // sequence of events expected by DownloadHistory. |
| 339 base::Closure history_on_created_callback = | 341 base::Closure history_on_created_callback = |
| 340 base::Bind(&content::DownloadManager::Observer::OnDownloadCreated, | 342 base::Bind(&content::DownloadManager::Observer::OnDownloadCreated, |
| 341 base::Unretained(download_history_manager_observer()), | 343 base::Unretained(download_history_manager_observer()), |
| 342 manager(), | 344 manager(), |
| 343 item.get()); | 345 item.get()); |
| 344 EXPECT_CALL(*manager(), MockCreateDownloadItem(_)).WillOnce( | 346 EXPECT_CALL(*manager(), MockCreateDownloadItem(_)) |
| 345 testing::DoAll(testing::InvokeWithoutArgs(&history_on_created_callback, | 347 .WillOnce(testing::DoAll(testing::InvokeWithoutArgs(CreateFunctor( |
| 346 &base::Closure::Run), | 348 history_on_created_callback)), |
| 347 Return(item.get()))); | 349 Return(item.get()))); |
| 348 EXPECT_CALL(mock_function, Call()); | 350 EXPECT_CALL(mock_function, Call()); |
| 349 | 351 |
| 350 history_query_callback().Run(std::move(history_downloads)); | 352 history_query_callback().Run(std::move(history_downloads)); |
| 351 mock_function.Call(); | 353 mock_function.Call(); |
| 352 } | 354 } |
| 353 | 355 |
| 354 // Now pass along the notification to the OnDownloadCreated observer from | 356 // Now pass along the notification to the OnDownloadCreated observer from |
| 355 // DownloadUIController. It should ignore the download since it's marked as | 357 // DownloadUIController. It should ignore the download since it's marked as |
| 356 // being restored from history. | 358 // being restored from history. |
| 357 ASSERT_TRUE(manager_observer()); | 359 ASSERT_TRUE(manager_observer()); |
| 358 manager_observer()->OnDownloadCreated(manager(), item.get()); | 360 manager_observer()->OnDownloadCreated(manager(), item.get()); |
| 359 | 361 |
| 360 // Finally, the expectation we've been waiting for: | 362 // Finally, the expectation we've been waiting for: |
| 361 EXPECT_FALSE(notified_item()); | 363 EXPECT_FALSE(notified_item()); |
| 362 } | 364 } |
| 363 | 365 |
| 364 } // namespace | 366 } // namespace |
| OLD | NEW |