Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 46 #include "chrome/browser/download/download_prefs.h" | 46 #include "chrome/browser/download/download_prefs.h" |
| 47 #include "chrome/browser/download/save_package_file_picker.h" | 47 #include "chrome/browser/download/save_package_file_picker.h" |
| 48 #include "chrome/browser/extensions/extension_browser_event_router.h" | 48 #include "chrome/browser/extensions/extension_browser_event_router.h" |
| 49 #include "chrome/browser/extensions/extension_host.h" | 49 #include "chrome/browser/extensions/extension_host.h" |
| 50 #include "chrome/browser/extensions/extension_process_manager.h" | 50 #include "chrome/browser/extensions/extension_process_manager.h" |
| 51 #include "chrome/browser/extensions/extension_service.h" | 51 #include "chrome/browser/extensions/extension_service.h" |
| 52 #include "chrome/browser/extensions/extension_updater.h" | 52 #include "chrome/browser/extensions/extension_updater.h" |
| 53 #include "chrome/browser/history/top_sites.h" | 53 #include "chrome/browser/history/top_sites.h" |
| 54 #include "chrome/browser/importer/importer_host.h" | 54 #include "chrome/browser/importer/importer_host.h" |
| 55 #include "chrome/browser/importer/importer_list.h" | 55 #include "chrome/browser/importer/importer_list.h" |
| 56 #include "chrome/browser/infobars/infobar_tab_helper.h" | |
| 56 #include "chrome/browser/instant/instant_controller.h" | 57 #include "chrome/browser/instant/instant_controller.h" |
| 57 #include "chrome/browser/notifications/balloon.h" | 58 #include "chrome/browser/notifications/balloon.h" |
| 58 #include "chrome/browser/notifications/balloon_collection.h" | 59 #include "chrome/browser/notifications/balloon_collection.h" |
| 59 #include "chrome/browser/notifications/notification.h" | 60 #include "chrome/browser/notifications/notification.h" |
| 60 #include "chrome/browser/notifications/notification_ui_manager.h" | 61 #include "chrome/browser/notifications/notification_ui_manager.h" |
| 61 #include "chrome/browser/password_manager/password_store.h" | 62 #include "chrome/browser/password_manager/password_store.h" |
| 62 #include "chrome/browser/password_manager/password_store_change.h" | 63 #include "chrome/browser/password_manager/password_store_change.h" |
| 63 #include "chrome/browser/platform_util.h" | 64 #include "chrome/browser/platform_util.h" |
| 64 #include "chrome/browser/plugin_prefs.h" | 65 #include "chrome/browser/plugin_prefs.h" |
| 65 #include "chrome/browser/prefs/pref_service.h" | 66 #include "chrome/browser/prefs/pref_service.h" |
| (...skipping 1808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1874 } | 1875 } |
| 1875 } | 1876 } |
| 1876 *success = false; | 1877 *success = false; |
| 1877 } | 1878 } |
| 1878 | 1879 |
| 1879 void TestingAutomationProvider::GetInfoBarCount(int handle, size_t* count) { | 1880 void TestingAutomationProvider::GetInfoBarCount(int handle, size_t* count) { |
| 1880 *count = static_cast<size_t>(-1); // -1 means error. | 1881 *count = static_cast<size_t>(-1); // -1 means error. |
| 1881 if (tab_tracker_->ContainsHandle(handle)) { | 1882 if (tab_tracker_->ContainsHandle(handle)) { |
| 1882 NavigationController* nav_controller = tab_tracker_->GetResource(handle); | 1883 NavigationController* nav_controller = tab_tracker_->GetResource(handle); |
| 1883 if (nav_controller) { | 1884 if (nav_controller) { |
| 1884 TabContentsWrapper* wrapper = | 1885 TabContentsWrapper* wrapper = |
|
Peter Kasting
2011/08/31 18:47:32
Nit: Just combine these two lines
| |
| 1885 TabContentsWrapper::GetCurrentWrapperForContents( | 1886 TabContentsWrapper::GetCurrentWrapperForContents( |
| 1886 nav_controller->tab_contents()); | 1887 nav_controller->tab_contents()); |
| 1887 *count = wrapper->infobar_count(); | 1888 *count = wrapper->infobar_tab_helper()->infobar_count(); |
| 1888 } | 1889 } |
| 1889 } | 1890 } |
| 1890 } | 1891 } |
| 1891 | 1892 |
| 1892 void TestingAutomationProvider::ClickInfoBarAccept( | 1893 void TestingAutomationProvider::ClickInfoBarAccept( |
| 1893 int handle, | 1894 int handle, |
| 1894 size_t info_bar_index, | 1895 size_t info_bar_index, |
| 1895 bool wait_for_navigation, | 1896 bool wait_for_navigation, |
| 1896 IPC::Message* reply_message) { | 1897 IPC::Message* reply_message) { |
| 1897 bool success = false; | 1898 bool success = false; |
| 1898 if (tab_tracker_->ContainsHandle(handle)) { | 1899 if (tab_tracker_->ContainsHandle(handle)) { |
| 1899 NavigationController* nav_controller = tab_tracker_->GetResource(handle); | 1900 NavigationController* nav_controller = tab_tracker_->GetResource(handle); |
| 1900 if (nav_controller) { | 1901 if (nav_controller) { |
| 1901 TabContentsWrapper* wrapper = | 1902 TabContentsWrapper* wrapper = |
|
Peter Kasting
2011/08/31 18:47:32
Nit: Convert this TCW* temp into an InfoBarTabHelp
| |
| 1902 TabContentsWrapper::GetCurrentWrapperForContents( | 1903 TabContentsWrapper::GetCurrentWrapperForContents( |
| 1903 nav_controller->tab_contents()); | 1904 nav_controller->tab_contents()); |
| 1904 if (info_bar_index < wrapper->infobar_count()) { | 1905 if (info_bar_index < wrapper->infobar_tab_helper()->infobar_count()) { |
| 1905 if (wait_for_navigation) { | 1906 if (wait_for_navigation) { |
| 1906 new NavigationNotificationObserver(nav_controller, this, | 1907 new NavigationNotificationObserver(nav_controller, this, |
| 1907 reply_message, 1, false, false); | 1908 reply_message, 1, false, false); |
| 1908 } | 1909 } |
| 1909 InfoBarDelegate* delegate = | 1910 InfoBarDelegate* delegate = |
| 1910 TabContentsWrapper::GetCurrentWrapperForContents( | 1911 TabContentsWrapper::GetCurrentWrapperForContents( |
| 1911 nav_controller->tab_contents())->GetInfoBarDelegateAt( | 1912 nav_controller->tab_contents())->infobar_tab_helper()-> |
| 1912 info_bar_index); | 1913 GetInfoBarDelegateAt(info_bar_index); |
| 1913 if (delegate->AsConfirmInfoBarDelegate()) | 1914 if (delegate->AsConfirmInfoBarDelegate()) |
| 1914 delegate->AsConfirmInfoBarDelegate()->Accept(); | 1915 delegate->AsConfirmInfoBarDelegate()->Accept(); |
| 1915 success = true; | 1916 success = true; |
| 1916 } | 1917 } |
| 1917 } | 1918 } |
| 1918 } | 1919 } |
| 1919 | 1920 |
| 1920 // This "!wait_for_navigation || !success condition" logic looks suspicious. | 1921 // This "!wait_for_navigation || !success condition" logic looks suspicious. |
| 1921 // It will send a failure message when success is true but | 1922 // It will send a failure message when success is true but |
| 1922 // |wait_for_navigation| is false. | 1923 // |wait_for_navigation| is false. |
| (...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2520 rect.set_width(width); | 2521 rect.set_width(width); |
| 2521 if (args->GetInteger("height", &height)) | 2522 if (args->GetInteger("height", &height)) |
| 2522 rect.set_height(height); | 2523 rect.set_height(height); |
| 2523 browser->window()->SetBounds(rect); | 2524 browser->window()->SetBounds(rect); |
| 2524 AutomationJSONReply(this, reply_message).SendSuccess(NULL); | 2525 AutomationJSONReply(this, reply_message).SendSuccess(NULL); |
| 2525 } | 2526 } |
| 2526 | 2527 |
| 2527 ListValue* TestingAutomationProvider::GetInfobarsInfo(TabContents* tc) { | 2528 ListValue* TestingAutomationProvider::GetInfobarsInfo(TabContents* tc) { |
| 2528 // Each infobar may have different properties depending on the type. | 2529 // Each infobar may have different properties depending on the type. |
| 2529 ListValue* infobars = new ListValue; | 2530 ListValue* infobars = new ListValue; |
| 2530 TabContentsWrapper* wrapper = | 2531 TabContentsWrapper* wrapper = |
|
Peter Kasting
2011/08/31 18:47:32
Nit: Convert this TCW* temp into an InfoBarTabHelp
| |
| 2531 TabContentsWrapper::GetCurrentWrapperForContents(tc); | 2532 TabContentsWrapper::GetCurrentWrapperForContents(tc); |
| 2532 for (size_t i = 0; i < wrapper->infobar_count(); ++i) { | 2533 for (size_t i = 0; i < wrapper->infobar_tab_helper()->infobar_count(); ++i) { |
| 2533 DictionaryValue* infobar_item = new DictionaryValue; | 2534 DictionaryValue* infobar_item = new DictionaryValue; |
| 2534 InfoBarDelegate* infobar = wrapper->GetInfoBarDelegateAt(i); | 2535 InfoBarDelegate* infobar = |
| 2536 wrapper->infobar_tab_helper()->GetInfoBarDelegateAt(i); | |
| 2535 if (infobar->AsConfirmInfoBarDelegate()) { | 2537 if (infobar->AsConfirmInfoBarDelegate()) { |
| 2536 // Also covers ThemeInstalledInfoBarDelegate. | 2538 // Also covers ThemeInstalledInfoBarDelegate. |
| 2537 infobar_item->SetString("type", "confirm_infobar"); | 2539 infobar_item->SetString("type", "confirm_infobar"); |
| 2538 ConfirmInfoBarDelegate* confirm_infobar = | 2540 ConfirmInfoBarDelegate* confirm_infobar = |
| 2539 infobar->AsConfirmInfoBarDelegate(); | 2541 infobar->AsConfirmInfoBarDelegate(); |
| 2540 infobar_item->SetString("text", confirm_infobar->GetMessageText()); | 2542 infobar_item->SetString("text", confirm_infobar->GetMessageText()); |
| 2541 infobar_item->SetString("link_text", confirm_infobar->GetLinkText()); | 2543 infobar_item->SetString("link_text", confirm_infobar->GetLinkText()); |
| 2542 ListValue* buttons_list = new ListValue; | 2544 ListValue* buttons_list = new ListValue; |
| 2543 int buttons = confirm_infobar->GetButtons(); | 2545 int buttons = confirm_infobar->GetButtons(); |
| 2544 if (buttons & ConfirmInfoBarDelegate::BUTTON_OK) { | 2546 if (buttons & ConfirmInfoBarDelegate::BUTTON_OK) { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2596 return; | 2598 return; |
| 2597 } | 2599 } |
| 2598 TabContentsWrapper* tab_contents = | 2600 TabContentsWrapper* tab_contents = |
| 2599 browser->GetTabContentsWrapperAt(tab_index); | 2601 browser->GetTabContentsWrapperAt(tab_index); |
| 2600 if (!tab_contents) { | 2602 if (!tab_contents) { |
| 2601 reply.SendError(StringPrintf("No such tab at index %d", tab_index)); | 2603 reply.SendError(StringPrintf("No such tab at index %d", tab_index)); |
| 2602 return; | 2604 return; |
| 2603 } | 2605 } |
| 2604 InfoBarDelegate* infobar = NULL; | 2606 InfoBarDelegate* infobar = NULL; |
| 2605 size_t infobar_index = static_cast<size_t>(infobar_index_int); | 2607 size_t infobar_index = static_cast<size_t>(infobar_index_int); |
| 2606 if (infobar_index >= tab_contents->infobar_count() || | 2608 if (infobar_index >= tab_contents->infobar_tab_helper()->infobar_count() || |
|
Peter Kasting
2011/08/31 18:47:32
Nit: Can you factor this infobar_tab_helper() out
| |
| 2607 !(infobar = tab_contents->GetInfoBarDelegateAt(infobar_index))) { | 2609 !(infobar = tab_contents->infobar_tab_helper()-> |
|
Peter Kasting
2011/08/31 18:47:32
Nit: This assignment can be pulled out of the cond
| |
| 2610 GetInfoBarDelegateAt(infobar_index))) { | |
| 2608 reply.SendError(StringPrintf("No such infobar at index %" PRIuS, | 2611 reply.SendError(StringPrintf("No such infobar at index %" PRIuS, |
| 2609 infobar_index)); | 2612 infobar_index)); |
| 2610 return; | 2613 return; |
| 2611 } | 2614 } |
| 2612 if ("dismiss" == action) { | 2615 if ("dismiss" == action) { |
| 2613 infobar->InfoBarDismissed(); | 2616 infobar->InfoBarDismissed(); |
| 2614 tab_contents->RemoveInfoBar(infobar); | 2617 tab_contents->infobar_tab_helper()->RemoveInfoBar(infobar); |
| 2615 reply.SendSuccess(NULL); | 2618 reply.SendSuccess(NULL); |
| 2616 return; | 2619 return; |
| 2617 } | 2620 } |
| 2618 if ("accept" == action || "cancel" == action) { | 2621 if ("accept" == action || "cancel" == action) { |
| 2619 ConfirmInfoBarDelegate* confirm_infobar; | 2622 ConfirmInfoBarDelegate* confirm_infobar; |
| 2620 if (!(confirm_infobar = infobar->AsConfirmInfoBarDelegate())) { | 2623 if (!(confirm_infobar = infobar->AsConfirmInfoBarDelegate())) { |
| 2621 reply.SendError("Not a confirm infobar"); | 2624 reply.SendError("Not a confirm infobar"); |
| 2622 return; | 2625 return; |
| 2623 } | 2626 } |
| 2624 if ("accept" == action) { | 2627 if ("accept" == action) { |
| 2625 if (confirm_infobar->Accept()) | 2628 if (confirm_infobar->Accept()) |
| 2626 tab_contents->RemoveInfoBar(infobar); | 2629 tab_contents->infobar_tab_helper()->RemoveInfoBar(infobar); |
| 2627 } else if ("cancel" == action) { | 2630 } else if ("cancel" == action) { |
| 2628 if (confirm_infobar->Cancel()) | 2631 if (confirm_infobar->Cancel()) |
| 2629 tab_contents->RemoveInfoBar(infobar); | 2632 tab_contents->infobar_tab_helper()->RemoveInfoBar(infobar); |
| 2630 } | 2633 } |
| 2631 reply.SendSuccess(NULL); | 2634 reply.SendSuccess(NULL); |
| 2632 return; | 2635 return; |
| 2633 } | 2636 } |
| 2634 reply.SendError("Invalid action"); | 2637 reply.SendError("Invalid action"); |
| 2635 } | 2638 } |
| 2636 | 2639 |
| 2637 namespace { | 2640 namespace { |
| 2638 | 2641 |
| 2639 // Task to get info about BrowserChildProcessHost. Must run on IO thread to | 2642 // Task to get info about BrowserChildProcessHost. Must run on IO thread to |
| (...skipping 1248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3888 if (!tab_contents) { | 3891 if (!tab_contents) { |
| 3889 *error_message = StringPrintf("No tab at index %d.", tab_index); | 3892 *error_message = StringPrintf("No tab at index %d.", tab_index); |
| 3890 return NULL; | 3893 return NULL; |
| 3891 } | 3894 } |
| 3892 return tab_contents; | 3895 return tab_contents; |
| 3893 } | 3896 } |
| 3894 | 3897 |
| 3895 // Get the TranslateInfoBarDelegate from TabContents. | 3898 // Get the TranslateInfoBarDelegate from TabContents. |
| 3896 TranslateInfoBarDelegate* GetTranslateInfoBarDelegate( | 3899 TranslateInfoBarDelegate* GetTranslateInfoBarDelegate( |
| 3897 TabContents* tab_contents) { | 3900 TabContents* tab_contents) { |
| 3898 TabContentsWrapper* wrapper = | 3901 TabContentsWrapper* wrapper = |
|
Peter Kasting
2011/08/31 18:47:32
Nit: Convert this TCW* temp into an InfoBarTabHelp
| |
| 3899 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents); | 3902 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents); |
| 3900 for (size_t i = 0; i < wrapper->infobar_count(); i++) { | 3903 for (size_t i = 0; i < wrapper->infobar_tab_helper()->infobar_count(); i++) { |
| 3901 InfoBarDelegate* infobar = wrapper->GetInfoBarDelegateAt(i); | 3904 InfoBarDelegate* infobar = |
| 3905 wrapper->infobar_tab_helper()->GetInfoBarDelegateAt(i); | |
| 3902 if (infobar->AsTranslateInfoBarDelegate()) | 3906 if (infobar->AsTranslateInfoBarDelegate()) |
| 3903 return infobar->AsTranslateInfoBarDelegate(); | 3907 return infobar->AsTranslateInfoBarDelegate(); |
| 3904 } | 3908 } |
| 3905 // No translate infobar. | 3909 // No translate infobar. |
| 3906 return NULL; | 3910 return NULL; |
| 3907 } | 3911 } |
| 3908 | 3912 |
| 3909 } // namespace | 3913 } // namespace |
| 3910 | 3914 |
| 3911 void TestingAutomationProvider::FindInPage( | 3915 void TestingAutomationProvider::FindInPage( |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4093 if (!translate_bar->ShouldShowNeverTranslateButton()) { | 4097 if (!translate_bar->ShouldShowNeverTranslateButton()) { |
| 4094 reply.SendError("Always translate button not showing."); | 4098 reply.SendError("Always translate button not showing."); |
| 4095 return; | 4099 return; |
| 4096 } | 4100 } |
| 4097 translate_bar->NeverTranslatePageLanguage(); | 4101 translate_bar->NeverTranslatePageLanguage(); |
| 4098 reply.SendSuccess(NULL); | 4102 reply.SendSuccess(NULL); |
| 4099 } else if (option == "decline_translation") { | 4103 } else if (option == "decline_translation") { |
| 4100 // This is the function called when an infobar is dismissed or when the | 4104 // This is the function called when an infobar is dismissed or when the |
| 4101 // user clicks the 'Nope' translate button. | 4105 // user clicks the 'Nope' translate button. |
| 4102 translate_bar->TranslationDeclined(); | 4106 translate_bar->TranslationDeclined(); |
| 4103 tab_contents_wrapper->RemoveInfoBar(translate_bar); | 4107 tab_contents_wrapper->infobar_tab_helper()->RemoveInfoBar(translate_bar); |
| 4104 reply.SendSuccess(NULL); | 4108 reply.SendSuccess(NULL); |
| 4105 } else { | 4109 } else { |
| 4106 reply.SendError("Invalid string found for option."); | 4110 reply.SendError("Invalid string found for option."); |
| 4107 } | 4111 } |
| 4108 } | 4112 } |
| 4109 | 4113 |
| 4110 // Sample json input: { "command": "GetBlockedPopupsInfo", | 4114 // Sample json input: { "command": "GetBlockedPopupsInfo", |
| 4111 // "tab_index": 1 } | 4115 // "tab_index": 1 } |
| 4112 // Refer GetBlockedPopupsInfo() in pyauto.py for sample output. | 4116 // Refer GetBlockedPopupsInfo() in pyauto.py for sample output. |
| 4113 void TestingAutomationProvider::GetBlockedPopupsInfo( | 4117 void TestingAutomationProvider::GetBlockedPopupsInfo( |
| (...skipping 2217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6331 IPC::ParamTraits<std::vector<GURL> >::Write(reply_message_, redirects_gurl); | 6335 IPC::ParamTraits<std::vector<GURL> >::Write(reply_message_, redirects_gurl); |
| 6332 | 6336 |
| 6333 Send(reply_message_); | 6337 Send(reply_message_); |
| 6334 redirect_query_ = 0; | 6338 redirect_query_ = 0; |
| 6335 reply_message_ = NULL; | 6339 reply_message_ = NULL; |
| 6336 } | 6340 } |
| 6337 | 6341 |
| 6338 void TestingAutomationProvider::OnRemoveProvider() { | 6342 void TestingAutomationProvider::OnRemoveProvider() { |
| 6339 AutomationProviderList::GetInstance()->RemoveProvider(this); | 6343 AutomationProviderList::GetInstance()->RemoveProvider(this); |
| 6340 } | 6344 } |
| OLD | NEW |