| 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 2594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2605 | 2605 |
| 2606 DownloadManager* download_manager = | 2606 DownloadManager* download_manager = |
| 2607 BrowserContext::GetDownloadManager(browser->profile()); | 2607 BrowserContext::GetDownloadManager(browser->profile()); |
| 2608 DownloadItem* selected_item = download_manager->GetDownload(id); | 2608 DownloadItem* selected_item = download_manager->GetDownload(id); |
| 2609 if (!selected_item) { | 2609 if (!selected_item) { |
| 2610 AutomationJSONReply(this, reply_message) | 2610 AutomationJSONReply(this, reply_message) |
| 2611 .SendError(base::StringPrintf("No download with an id of %d\n", id)); | 2611 .SendError(base::StringPrintf("No download with an id of %d\n", id)); |
| 2612 return; | 2612 return; |
| 2613 } | 2613 } |
| 2614 | 2614 |
| 2615 DownloadItem::DownloadState download_state = selected_item->GetState(); |
| 2616 |
| 2615 // We need to be IN_PROGRESS for these actions. | 2617 // We need to be IN_PROGRESS for these actions. |
| 2616 if ((action == "pause" || action == "resume" || action == "cancel") && | 2618 if ((action == "pause" || action == "resume" || action == "cancel") && |
| 2617 !selected_item->IsInProgress()) { | 2619 download_state != DownloadItem::IN_PROGRESS) { |
| 2618 AutomationJSONReply(this, reply_message) | 2620 AutomationJSONReply(this, reply_message) |
| 2619 .SendError("Selected DownloadItem is not in progress."); | 2621 .SendError(base::StringPrintf( |
| 2622 "Action '%s' called on download that is not in progress.", |
| 2623 action.c_str())); |
| 2624 return; |
| 2620 } | 2625 } |
| 2621 | 2626 |
| 2622 if (action == "open") { | 2627 if (action == "open") { |
| 2623 selected_item->AddObserver( | 2628 selected_item->AddObserver( |
| 2624 new AutomationProviderDownloadUpdatedObserver( | 2629 new AutomationProviderDownloadUpdatedObserver( |
| 2625 this, reply_message, true, browser->profile()->IsOffTheRecord())); | 2630 this, reply_message, true, browser->profile()->IsOffTheRecord())); |
| 2626 selected_item->OpenDownload(); | 2631 selected_item->OpenDownload(); |
| 2627 } else if (action == "toggle_open_files_like_this") { | 2632 } else if (action == "toggle_open_files_like_this") { |
| 2628 DownloadPrefs* prefs = | 2633 DownloadPrefs* prefs = |
| 2629 DownloadPrefs::FromBrowserContext(selected_item->GetBrowserContext()); | 2634 DownloadPrefs::FromBrowserContext(selected_item->GetBrowserContext()); |
| 2630 base::FilePath path = selected_item->GetTargetFilePath(); | 2635 base::FilePath path = selected_item->GetTargetFilePath(); |
| 2631 if (!selected_item->ShouldOpenFileBasedOnExtension()) | 2636 if (!selected_item->ShouldOpenFileBasedOnExtension()) |
| 2632 prefs->EnableAutoOpenBasedOnExtension(path); | 2637 prefs->EnableAutoOpenBasedOnExtension(path); |
| 2633 else | 2638 else |
| 2634 prefs->DisableAutoOpenBasedOnExtension(path); | 2639 prefs->DisableAutoOpenBasedOnExtension(path); |
| 2635 AutomationJSONReply(this, reply_message).SendSuccess(NULL); | 2640 AutomationJSONReply(this, reply_message).SendSuccess(NULL); |
| 2636 } else if (action == "remove") { | 2641 } else if (action == "remove") { |
| 2637 new AutomationProviderDownloadModelChangedObserver( | 2642 new AutomationProviderDownloadModelChangedObserver( |
| 2638 this, reply_message, download_manager); | 2643 this, reply_message, download_manager); |
| 2639 selected_item->Remove(); | 2644 selected_item->Remove(); |
| 2640 } else if (action == "decline_dangerous_download") { | 2645 } else if (action == "decline_dangerous_download") { |
| 2641 new AutomationProviderDownloadModelChangedObserver( | 2646 new AutomationProviderDownloadModelChangedObserver( |
| 2642 this, reply_message, download_manager); | 2647 this, reply_message, download_manager); |
| 2643 selected_item->Remove(); | 2648 selected_item->Remove(); |
| 2644 } else if (action == "save_dangerous_download") { | 2649 } else if (action == "save_dangerous_download") { |
| 2645 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2650 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2646 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2651 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2647 selected_item->ValidateDangerousDownload(); | 2652 selected_item->ValidateDangerousDownload(); |
| 2648 } else if (action == "pause") { | 2653 } else if (action == "pause") { |
| 2649 if (!selected_item->IsInProgress() || selected_item->IsPaused()) { | 2654 if (selected_item->IsPaused()) { |
| 2650 // Action would 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 |
| 2651 // 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. |
| 2652 if (!selected_item->IsInProgress()) { | 2657 AutomationJSONReply(this, reply_message) |
| 2653 AutomationJSONReply(this, reply_message) | 2658 .SendError("Action 'pause' called on already paused download."); |
| 2654 .SendError("Action 'pause' called on download in termal state."); | |
| 2655 } else { | |
| 2656 AutomationJSONReply(this, reply_message) | |
| 2657 .SendError("Action 'pause' called on already paused download."); | |
| 2658 } | |
| 2659 } else { | 2659 } else { |
| 2660 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2660 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2661 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2661 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2662 selected_item->Pause(); | 2662 selected_item->Pause(); |
| 2663 } | 2663 } |
| 2664 } else if (action == "resume") { | 2664 } else if (action == "resume") { |
| 2665 if (!selected_item->IsInProgress() || !selected_item->IsPaused()) { | 2665 if (!selected_item->IsPaused()) { |
| 2666 // Action would be a no-op; respond right from here. No-op implies | 2666 // Action would be a no-op; respond right from here. No-op implies |
| 2667 // the test is poorly written or failing, so make it an error return. | 2667 // the test is poorly written or failing, so make it an error return. |
| 2668 if (!selected_item->IsInProgress()) { | 2668 AutomationJSONReply(this, reply_message) |
| 2669 AutomationJSONReply(this, reply_message) | 2669 .SendError("Action 'resume' called on unpaused download."); |
| 2670 .SendError("Action 'resume' called on download in termal state."); | |
| 2671 } else { | |
| 2672 AutomationJSONReply(this, reply_message) | |
| 2673 .SendError("Action 'resume' called on unpaused download."); | |
| 2674 } | |
| 2675 } else { | 2670 } else { |
| 2676 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2671 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2677 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2672 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2678 selected_item->Resume(); | 2673 selected_item->Resume(); |
| 2679 } | 2674 } |
| 2680 } else if (action == "cancel") { | 2675 } else if (action == "cancel") { |
| 2681 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( | 2676 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( |
| 2682 this, reply_message, false, browser->profile()->IsOffTheRecord())); | 2677 this, reply_message, false, browser->profile()->IsOffTheRecord())); |
| 2683 selected_item->Cancel(true); | 2678 selected_item->Cancel(true); |
| 2684 } else { | 2679 } else { |
| (...skipping 3000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5685 if (g_browser_process) | 5680 if (g_browser_process) |
| 5686 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); | 5681 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); |
| 5687 } | 5682 } |
| 5688 | 5683 |
| 5689 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, | 5684 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, |
| 5690 WebContents* tab) { | 5685 WebContents* tab) { |
| 5691 TabStripModel* tab_strip = browser->tab_strip_model(); | 5686 TabStripModel* tab_strip = browser->tab_strip_model(); |
| 5692 if (tab_strip->GetActiveWebContents() != tab) | 5687 if (tab_strip->GetActiveWebContents() != tab) |
| 5693 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true); | 5688 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true); |
| 5694 } | 5689 } |
| OLD | NEW |