Chromium Code Reviews| 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/automation/testing_automation_provider.h" | 5 #include "chrome/browser/automation/testing_automation_provider.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 2599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2610 | 2610 |
| 2611 DownloadManager* download_manager = | 2611 DownloadManager* download_manager = |
| 2612 BrowserContext::GetDownloadManager(browser->profile()); | 2612 BrowserContext::GetDownloadManager(browser->profile()); |
| 2613 DownloadItem* selected_item = download_manager->GetDownload(id); | 2613 DownloadItem* selected_item = download_manager->GetDownload(id); |
| 2614 if (!selected_item) { | 2614 if (!selected_item) { |
| 2615 AutomationJSONReply(this, reply_message) | 2615 AutomationJSONReply(this, reply_message) |
| 2616 .SendError(base::StringPrintf("No download with an id of %d\n", id)); | 2616 .SendError(base::StringPrintf("No download with an id of %d\n", id)); |
| 2617 return; | 2617 return; |
| 2618 } | 2618 } |
| 2619 | 2619 |
| 2620 DownloadItem::DownloadState download_state = selected_item->GetState(); | |
| 2621 | |
| 2620 // We need to be IN_PROGRESS for these actions. | 2622 // We need to be IN_PROGRESS for these actions. |
| 2621 if ((action == "pause" || action == "resume" || action == "cancel") && | 2623 if ((action == "pause" || action == "resume" || action == "cancel") && |
| 2622 !selected_item->IsInProgress()) { | 2624 download_state != DownloadItem::IN_PROGRESS) { |
|
asanka
2013/05/28 18:43:15
This check is necessary for 'pause' and 'resume' g
| |
| 2623 AutomationJSONReply(this, reply_message) | 2625 AutomationJSONReply(this, reply_message) |
| 2624 .SendError("Selected DownloadItem is not in progress."); | 2626 .SendError("Selected DownloadItem is not in progress."); |
| 2625 } | 2627 } |
| 2626 | 2628 |
| 2627 if (action == "open") { | 2629 if (action == "open") { |
| 2628 selected_item->AddObserver( | 2630 selected_item->AddObserver( |
| 2629 new AutomationProviderDownloadUpdatedObserver( | 2631 new AutomationProviderDownloadUpdatedObserver( |
| 2630 this, reply_message, true, browser->profile()->IsOffTheRecord())); | 2632 this, reply_message, true, browser->profile()->IsOffTheRecord())); |
| 2631 selected_item->OpenDownload(); | 2633 selected_item->OpenDownload(); |
| 2632 } else if (action == "toggle_open_files_like_this") { | 2634 } else if (action == "toggle_open_files_like_this") { |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 2644 selected_item->Remove(); | 2646 selected_item->Remove(); |
| 2645 } else if (action == "decline_dangerous_download") { | 2647 } else if (action == "decline_dangerous_download") { |
| 2646 new AutomationProviderDownloadModelChangedObserver( | 2648 new AutomationProviderDownloadModelChangedObserver( |
| 2647 this, reply_message, download_manager); | 2649 this, reply_message, download_manager); |
| 2648 selected_item->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD); | 2650 selected_item->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD); |
| 2649 } else if (action == "save_dangerous_download") { | 2651 } else if (action == "save_dangerous_download") { |
| 2650 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2652 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2651 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2653 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2652 selected_item->DangerousDownloadValidated(); | 2654 selected_item->DangerousDownloadValidated(); |
| 2653 } else if (action == "pause") { | 2655 } else if (action == "pause") { |
| 2654 if (!selected_item->IsInProgress() || selected_item->IsPaused()) { | 2656 // If action will be a no-op; respond right from here. No-op implies |
| 2655 // Action would be a no-op; respond right from here. No-op implies | 2657 // the test is poorly written or failing, so make it an error return. |
| 2656 // the test is poorly written or failing, so make it an error return. | 2658 if (download_state != DownloadItem::IN_PROGRESS) { |
| 2657 if (!selected_item->IsInProgress()) { | 2659 AutomationJSONReply(this, reply_message) |
| 2658 AutomationJSONReply(this, reply_message) | 2660 .SendError("Action 'pause' called on download in termal state."); |
| 2659 .SendError("Action 'pause' called on download in termal state."); | 2661 } else if (selected_item->IsPaused()) { |
| 2660 } else { | 2662 AutomationJSONReply(this, reply_message) |
| 2661 AutomationJSONReply(this, reply_message) | 2663 .SendError("Action 'pause' called on already paused download."); |
| 2662 .SendError("Action 'pause' called on already paused download."); | |
| 2663 } | |
| 2664 } else { | 2664 } else { |
| 2665 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2665 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2666 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2666 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2667 selected_item->Pause(); | 2667 selected_item->Pause(); |
| 2668 } | 2668 } |
| 2669 } else if (action == "resume") { | 2669 } else if (action == "resume") { |
| 2670 if (!selected_item->IsInProgress() || !selected_item->IsPaused()) { | 2670 // If action will be a no-op; respond right from here. No-op implies |
| 2671 // Action would be a no-op; respond right from here. No-op implies | 2671 // the test is poorly written or failing, so make it an error return. |
| 2672 // the test is poorly written or failing, so make it an error return. | 2672 if (download_state != DownloadItem::IN_PROGRESS) { |
| 2673 if (!selected_item->IsInProgress()) { | 2673 AutomationJSONReply(this, reply_message) |
| 2674 AutomationJSONReply(this, reply_message) | 2674 .SendError("Action 'resume' called on download in termal state."); |
| 2675 .SendError("Action 'resume' called on download in termal state."); | 2675 } else if (!selected_item->IsPaused()) { |
| 2676 } else { | 2676 AutomationJSONReply(this, reply_message) |
| 2677 AutomationJSONReply(this, reply_message) | 2677 .SendError("Action 'resume' called on unpaused download."); |
| 2678 .SendError("Action 'resume' called on unpaused download."); | |
| 2679 } | |
| 2680 } else { | 2678 } else { |
| 2681 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2679 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2682 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2680 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2683 selected_item->Resume(); | 2681 selected_item->Resume(); |
| 2684 } | 2682 } |
| 2685 } else if (action == "cancel") { | 2683 } else if (action == "cancel") { |
| 2686 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2684 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2687 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2685 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2688 selected_item->Cancel(true); | 2686 selected_item->Cancel(true); |
| 2689 } else { | 2687 } else { |
| (...skipping 3000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5690 if (g_browser_process) | 5688 if (g_browser_process) |
| 5691 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); | 5689 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); |
| 5692 } | 5690 } |
| 5693 | 5691 |
| 5694 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, | 5692 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, |
| 5695 WebContents* tab) { | 5693 WebContents* tab) { |
| 5696 TabStripModel* tab_strip = browser->tab_strip_model(); | 5694 TabStripModel* tab_strip = browser->tab_strip_model(); |
| 5697 if (tab_strip->GetActiveWebContents() != tab) | 5695 if (tab_strip->GetActiveWebContents() != tab) |
| 5698 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true); | 5696 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true); |
| 5699 } | 5697 } |
| OLD | NEW |