| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_AUTOMATION_TESTING_AUTOMATION_PROVIDER_H_ |
| #define CHROME_BROWSER_AUTOMATION_TESTING_AUTOMATION_PROVIDER_H_ |
| #pragma once |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "base/compiler_specific.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "chrome/browser/automation/automation_provider.h" |
| #include "chrome/browser/automation/automation_provider_json.h" |
| #include "chrome/browser/history/history.h" |
| #include "chrome/browser/importer/importer_list.h" |
| #include "chrome/browser/sync/profile_sync_service_harness.h" |
| #include "chrome/browser/ui/browser_list.h" |
| #include "content/common/notification_registrar.h" |
| #include "content/common/page_type.h" |
| |
| class DictionaryValue; |
| class TemplateURLModel; |
| |
| // This is an automation provider containing testing calls. |
| class TestingAutomationProvider : public AutomationProvider, |
| public BrowserList::Observer, |
| public ImporterList::Observer, |
| public NotificationObserver { |
| public: |
| explicit TestingAutomationProvider(Profile* profile); |
| |
| // IPC::Channel::Listener: |
| virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; |
| virtual void OnChannelError() OVERRIDE; |
| |
| private: |
| class PopupMenuWaiter; |
| |
| // Storage for ImportSettings() to resume operations after a callback. |
| struct ImportSettingsData { |
| string16 browser_name; |
| int import_items; |
| bool first_run; |
| Browser* browser; |
| IPC::Message* reply_message; |
| }; |
| |
| virtual ~TestingAutomationProvider(); |
| |
| // BrowserList::Observer: |
| virtual void OnBrowserAdded(const Browser* browser) OVERRIDE; |
| virtual void OnBrowserRemoved(const Browser* browser) OVERRIDE; |
| |
| // ImporterList::Observer: |
| virtual void OnSourceProfilesLoaded() OVERRIDE; |
| |
| // NotificationObserver: |
| virtual void Observe(NotificationType type, |
| const NotificationSource& source, |
| const NotificationDetails& details) OVERRIDE; |
| |
| // IPC Message callbacks. |
| void CloseBrowser(int handle, IPC::Message* reply_message); |
| void CloseBrowserAsync(int browser_handle); |
| void ActivateTab(int handle, int at_index, int* status); |
| void AppendTab(int handle, const GURL& url, IPC::Message* reply_message); |
| void GetActiveTabIndex(int handle, int* active_tab_index); |
| void CloseTab(int tab_handle, bool wait_until_closed, |
| IPC::Message* reply_message); |
| void GetCookies(const GURL& url, int handle, int* value_size, |
| std::string* value); |
| void SetCookie(const GURL& url, |
| const std::string& value, |
| int handle, |
| int* response_value); |
| void DeleteCookie(const GURL& url, const std::string& cookie_name, |
| int handle, bool* success); |
| void ShowCollectedCookiesDialog(int handle, bool* success); |
| void NavigateToURLBlockUntilNavigationsComplete(int handle, const GURL& url, |
| int number_of_navigations, |
| IPC::Message* reply_message); |
| void NavigationAsync(int handle, const GURL& url, bool* status); |
| void NavigationAsyncWithDisposition(int handle, |
| const GURL& url, |
| WindowOpenDisposition disposition, |
| bool* status); |
| void Reload(int handle, IPC::Message* reply_message); |
| void SetAuth(int tab_handle, const std::wstring& username, |
| const std::wstring& password, IPC::Message* reply_message); |
| void CancelAuth(int tab_handle, IPC::Message* reply_message); |
| void NeedsAuth(int tab_handle, bool* needs_auth); |
| void GetRedirectsFrom(int tab_handle, |
| const GURL& source_url, |
| IPC::Message* reply_message); |
| void GetBrowserWindowCount(int* window_count); |
| void GetNormalBrowserWindowCount(int* window_count); |
| // Be aware that the browser window returned might be of non TYPE_NORMAL |
| // or in incognito mode. |
| void GetBrowserWindow(int index, int* handle); |
| void FindNormalBrowserWindow(int* handle); |
| void GetLastActiveBrowserWindow(int* handle); |
| void GetActiveWindow(int* handle); |
| void ExecuteBrowserCommandAsync(int handle, int command, bool* success); |
| void ExecuteBrowserCommand(int handle, int command, |
| IPC::Message* reply_message); |
| void GetBrowserLocale(string16* locale); |
| void IsWindowActive(int handle, bool* success, bool* is_active); |
| void ActivateWindow(int handle); |
| void IsWindowMaximized(int handle, bool* is_maximized, bool* success); |
| void TerminateSession(int handle, bool* success); |
| void WindowGetViewBounds(int handle, int view_id, bool screen_coordinates, |
| bool* success, gfx::Rect* bounds); |
| void GetWindowBounds(int handle, gfx::Rect* bounds, bool* result); |
| void SetWindowBounds(int handle, const gfx::Rect& bounds, bool* result); |
| void SetWindowVisible(int handle, bool visible, bool* result); |
| void WindowSimulateClick(const IPC::Message& message, |
| int handle, |
| const gfx::Point& click, |
| int flags); |
| void WindowSimulateMouseMove(const IPC::Message& message, |
| int handle, |
| const gfx::Point& location); |
| void WindowSimulateKeyPress(const IPC::Message& message, |
| int handle, |
| int key, |
| int flags); |
| void GetTabCount(int handle, int* tab_count); |
| void GetType(int handle, int* type_as_int); |
| void GetTab(int win_handle, int tab_index, int* tab_handle); |
| void GetTabProcessID(int handle, int* process_id); |
| void GetTabTitle(int handle, int* title_string_size, std::wstring* title); |
| void GetTabIndex(int handle, int* tabstrip_index); |
| void GetTabURL(int handle, bool* success, GURL* url); |
| void GetShelfVisibility(int handle, bool* visible); |
| void IsFullscreen(int handle, bool* is_fullscreen); |
| void GetFullscreenBubbleVisibility(int handle, bool* is_visible); |
| void GetAutocompleteEditForBrowser(int browser_handle, bool* success, |
| int* autocomplete_edit_handle); |
| |
| // Retrieves the visible text from the autocomplete edit. |
| void GetAutocompleteEditText(int autocomplete_edit_handle, |
| bool* success, string16* text); |
| |
| // Sets the visible text from the autocomplete edit. |
| void SetAutocompleteEditText(int autocomplete_edit_handle, |
| const string16& text, |
| bool* success); |
| |
| // Retrieves if a query to an autocomplete provider is in progress. |
| void AutocompleteEditIsQueryInProgress(int autocomplete_edit_handle, |
| bool* success, |
| bool* query_in_progress); |
| |
| // Retrieves the individual autocomplete matches displayed by the popup. |
| void AutocompleteEditGetMatches(int autocomplete_edit_handle, |
| bool* success, |
| std::vector<AutocompleteMatchData>* matches); |
| |
| // Waits for the autocomplete edit to receive focus |
| void WaitForAutocompleteEditFocus(int autocomplete_edit_handle, |
| IPC::Message* reply_message); |
| |
| void ExecuteJavascript(int handle, |
| const std::wstring& frame_xpath, |
| const std::wstring& script, |
| IPC::Message* reply_message); |
| |
| void GetConstrainedWindowCount(int handle, int* count); |
| |
| #if defined(TOOLKIT_VIEWS) |
| void GetFocusedViewID(int handle, int* view_id); |
| |
| // Block until the focused view ID changes to something other than |
| // previous_view_id. |
| void WaitForFocusedViewIDToChange(int handle, |
| int previous_view_id, |
| IPC::Message* reply_message); |
| |
| // Start tracking popup menus. Must be called before executing the |
| // command that might open the popup menu; then call WaitForPopupMenuToOpen. |
| void StartTrackingPopupMenus(int browser_handle, bool* success); |
| |
| // Wait until a popup menu has opened. |
| void WaitForPopupMenuToOpen(IPC::Message* reply_message); |
| #endif // defined(TOOLKIT_VIEWS) |
| |
| void HandleInspectElementRequest(int handle, |
| int x, |
| int y, |
| IPC::Message* reply_message); |
| |
| void GetDownloadDirectory(int handle, FilePath* download_directory); |
| |
| // If |show| is true, call Show() on the new window after creating it. |
| void OpenNewBrowserWindowOfType(int type, |
| bool show, |
| IPC::Message* reply_message); |
| |
| // Retrieves a Browser from a Window and vice-versa. |
| void GetWindowForBrowser(int window_handle, bool* success, int* handle); |
| void GetBrowserForWindow(int window_handle, bool* success, |
| int* browser_handle); |
| |
| void ShowInterstitialPage(int tab_handle, |
| const std::string& html_text, |
| IPC::Message* reply_message); |
| void HideInterstitialPage(int tab_handle, bool* success); |
| |
| void WaitForTabToBeRestored(int tab_handle, IPC::Message* reply_message); |
| |
| // Gets the security state for the tab associated to the specified |handle|. |
| void GetSecurityState(int handle, bool* success, |
| SecurityStyle* security_style, int* ssl_cert_status, |
| int* insecure_content_status); |
| |
| // Gets the page type for the tab associated to the specified |handle|. |
| void GetPageType(int handle, bool* success, PageType* page_type); |
| |
| // Gets the duration in ms of the last event matching |event_name|. |
| // |duration_ms| is -1 if the event hasn't occurred yet. |
| void GetMetricEventDuration(const std::string& event_name, int* duration_ms); |
| |
| // Simulates an action on the SSL blocking page at the tab specified by |
| // |handle|. If |proceed| is true, it is equivalent to the user pressing the |
| // 'Proceed' button, if false the 'Get me out of there button'. |
| // Not that this fails if the tab is not displaying a SSL blocking page. |
| void ActionOnSSLBlockingPage(int handle, |
| bool proceed, |
| IPC::Message* reply_message); |
| |
| // Brings the browser window to the front and activates it. |
| void BringBrowserToFront(int browser_handle, bool* success); |
| |
| // Checks to see if a command on the browser's CommandController is enabled. |
| void IsMenuCommandEnabled(int browser_handle, |
| int message_num, |
| bool* menu_item_enabled); |
| |
| // Prints the current tab immediately. |
| void PrintNow(int tab_handle, IPC::Message* reply_message); |
| |
| // Save the current web page. |
| void SavePage(int tab_handle, |
| const FilePath& file_name, |
| const FilePath& dir_path, |
| int type, |
| bool* success); |
| |
| // Responds to requests to open the FindInPage window. |
| void HandleOpenFindInPageRequest(const IPC::Message& message, |
| int handle); |
| |
| // Get the visibility state of the Find window. |
| void GetFindWindowVisibility(int handle, bool* visible); |
| |
| // Responds to requests to find the location of the Find window. |
| void HandleFindWindowLocationRequest(int handle, int* x, int* y); |
| |
| // Get the visibility state of the Bookmark bar. |
| void GetBookmarkBarVisibility(int handle, bool* visible, bool* animating); |
| |
| // Get the bookmarks as a JSON string. |
| void GetBookmarksAsJSON(int handle, std::string* bookmarks_as_json, |
| bool *success); |
| |
| // Wait for the bookmark model to load. |
| void WaitForBookmarkModelToLoad(int handle, IPC::Message* reply_message); |
| |
| // Set |loaded| to true if the bookmark model has loaded, else false. |
| void BookmarkModelHasLoaded(int handle, bool* loaded); |
| |
| // Editing, modification, and removal of bookmarks. |
| // Bookmarks are referenced by id. |
| void AddBookmarkGroup(int handle, |
| int64 parent_id, int index, std::wstring title, |
| bool* success); |
| void AddBookmarkURL(int handle, |
| int64 parent_id, int index, |
| std::wstring title, const GURL& url, |
| bool* success); |
| void ReparentBookmark(int handle, |
| int64 id, int64 new_parent_id, int index, |
| bool* success); |
| void SetBookmarkTitle(int handle, |
| int64 id, std::wstring title, |
| bool* success); |
| void SetBookmarkURL(int handle, |
| int64 id, const GURL& url, |
| bool* success); |
| void RemoveBookmark(int handle, |
| int64 id, |
| bool* success); |
| |
| // Retrieves the number of info-bars currently showing in |count|. |
| void GetInfoBarCount(int handle, size_t* count); |
| |
| // Causes a click on the "accept" button of the info-bar at |info_bar_index|. |
| // If |wait_for_navigation| is true, it sends the reply after a navigation has |
| // occurred. |
| void ClickInfoBarAccept(int handle, |
| size_t info_bar_index, |
| bool wait_for_navigation, |
| IPC::Message* reply_message); |
| |
| // Retrieves the last time a navigation occurred for the tab. |
| void GetLastNavigationTime(int handle, int64* last_navigation_time); |
| |
| // Waits for a new navigation in the tab if none has happened since |
| // |last_navigation_time|. |
| void WaitForNavigation(int handle, |
| int64 last_navigation_time, |
| IPC::Message* reply_message); |
| |
| // Sets the int value for preference with name |name|. |
| void SetIntPreference(int handle, |
| const std::string& name, |
| int value, |
| bool* success); |
| |
| // Sets the string value for preference with name |name|. |
| void SetStringPreference(int handle, |
| const std::string& name, |
| const std::string& value, |
| bool* success); |
| |
| // Gets the bool value for preference with name |name|. |
| void GetBooleanPreference(int handle, |
| const std::string& name, |
| bool* success, |
| bool* value); |
| |
| // Sets the bool value for preference with name |name|. |
| void SetBooleanPreference(int handle, |
| const std::string& name, |
| bool value, |
| bool* success); |
| |
| void GetShowingAppModalDialog(bool* showing_dialog, int* dialog_button); |
| void ClickAppModalDialogButton(int button, bool* success); |
| |
| void WaitForBrowserWindowCountToBecome(int target_count, |
| IPC::Message* reply_message); |
| |
| void WaitForAppModalDialogToBeShown(IPC::Message* reply_message); |
| |
| void GoBackBlockUntilNavigationsComplete(int handle, |
| int number_of_navigations, |
| IPC::Message* reply_message); |
| |
| void GoForwardBlockUntilNavigationsComplete(int handle, |
| int number_of_navigations, |
| IPC::Message* reply_message); |
| |
| void SavePackageShouldPromptUser(bool should_prompt); |
| |
| void GetWindowTitle(int handle, string16* text); |
| |
| void SetShelfVisibility(int handle, bool visible); |
| |
| // Returns the number of blocked popups in the tab |handle|. |
| void GetBlockedPopupCount(int handle, int* count); |
| |
| // Generic pattern for pyautolib |
| // Uses the JSON interface for input/output. |
| void SendJSONRequest(int handle, |
| const std::string& json_request, |
| IPC::Message* reply_message); |
| |
| // Method ptr for json handlers. |
| // Uses the JSON interface for input/output. |
| typedef void (TestingAutomationProvider::*JsonHandler)(DictionaryValue*, |
| IPC::Message*); |
| |
| // Method ptr for json handlers that take a browser argument. |
| // Uses the JSON interface for input/output. |
| typedef void (TestingAutomationProvider::*BrowserJsonHandler)( |
| Browser* browser, |
| DictionaryValue*, |
| IPC::Message*); |
| |
| // Set window dimensions. |
| // Uses the JSON interface for input/output. |
| void SetWindowDimensions(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about infobars in the given TabContents object. |
| // This includes info about the type of infobars, the message text, |
| // buttons, etc. |
| // Caller owns the returned object. |
| ListValue* GetInfobarsInfo(TabContents* tc); |
| |
| // Perform actions on an infobar like dismiss, accept, cancel. |
| // Uses the JSON interface for input/output. |
| void PerformActionOnInfobar(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about the chromium/chrome in use. |
| // This includes things like version, executable name, executable path. |
| // Uses the JSON interface for input/output. |
| void GetBrowserInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about the state of navigation in a given tab. |
| // This includes ssl info. |
| // Uses the JSON interface for input/output. |
| void GetNavigationInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about downloads. This includes only ones that have been |
| // registered by the history system. |
| // Uses the JSON interface for input/output. |
| void GetDownloadsInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Wait for all downloads to complete. |
| // Uses the JSON interface for input/output. |
| void WaitForDownloadsToComplete(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Performs the given action on the specified download. |
| // Uses the JSON interface for input/output. |
| void PerformActionOnDownload(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about history. |
| // Uses the JSON interface for input/output. |
| void GetHistoryInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Add an item to the history service. |
| // Uses the JSON interface for input/output. |
| void AddHistoryItem(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Invoke loading of template url model. |
| // Uses the JSON interface for input/output. |
| void LoadSearchEngineInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get search engines list. |
| // Assumes that the profile's template url model is loaded. |
| // Uses the JSON interface for input/output. |
| void GetSearchEngineInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Add or edit search engine. |
| // Assumes that the profile's template url model is loaded. |
| // Uses the JSON interface for input/output. |
| void AddOrEditSearchEngine(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Perform a given action on an existing search engine. |
| // Assumes that the profile's template url model is loaded. |
| // Uses the JSON interface for input/output. |
| void PerformActionOnSearchEngine(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about preferences. |
| // Uses the JSON interface for input/output. |
| void GetPrefsInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Set prefs. |
| // Uses the JSON interface for input/output. |
| void SetPrefs(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Return load times of initial tabs. |
| // Uses the JSON interface for input/output. |
| // Only includes tabs from command line arguments or session restore. |
| // See declaration of InitialLoadObserver in automation_provider_observers.h |
| // for example response. |
| void GetInitialLoadTimes(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about plugins. |
| // Uses the JSON interface for input/output. |
| void GetPluginsInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Enable a plugin. |
| // Uses the JSON interface for input/output. |
| void EnablePlugin(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Disable a plugin. |
| // Uses the JSON interface for input/output. |
| void DisablePlugin(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about omnibox. |
| // Contains data about the matches (url, content, description) |
| // in the omnibox popup, the text in the omnibox. |
| // Uses the JSON interface for input/output. |
| void GetOmniboxInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Set text in the omnibox. This sets focus to the omnibox. |
| // Uses the JSON interface for input/output. |
| void SetOmniboxText(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Move omnibox popup selection up or down. |
| // Uses the JSON interface for input/output. |
| void OmniboxMovePopupSelection(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Accept the current string of text in the omnibox. |
| // This is equivalent to clicking or hiting enter on a popup selection. |
| // Blocks until the page loads. |
| // Uses the JSON interface for input/output. |
| void OmniboxAcceptInput(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Generate dictionary info about instant tab. |
| // Uses the JSON interface for input/output. |
| void GetInstantInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Save the contents of a tab into a file. |
| // Uses the JSON interface for input/output. |
| void SaveTabContents(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Import the given settings from the given browser. |
| // Uses the JSON interface for input/output. |
| void ImportSettings(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Add a new entry to the password store based on the password information |
| // provided. This method can also be used to add a blacklisted site (which |
| // will never fill in the password). |
| // Uses the JSON interface for input/output. |
| void AddSavedPassword(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Removes the password matching the information provided. This method can |
| // also be used to remove a blacklisted site. |
| // Uses the JSON interface for input/output. |
| void RemoveSavedPassword(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Return the saved username/password combinations. |
| // Uses the JSON interface for input/output. |
| void GetSavedPasswords(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Clear the specified browsing data. This call provides similar |
| // functionality to RemoveBrowsingData but is synchronous. |
| // Uses the JSON interface for input/output. |
| void ClearBrowsingData(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about blocked popups in a tab. |
| // Uses the JSON interface for input/output. |
| void GetBlockedPopupsInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Launch a blocked popup. |
| // Uses the JSON interface for input/output. |
| void UnblockAndLaunchBlockedPopup(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about theme. |
| // Uses the JSON interface for input/output. |
| void GetThemeInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get info about all intalled extensions. |
| // Uses the JSON interface for input/output. |
| void GetExtensionsInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Uninstalls the extension with the given id. |
| // Uses the JSON interface for input/output. |
| void UninstallExtensionById(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Responds to the Find request and returns the match count. |
| void FindInPage(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Returns information about translation for a given tab. Includes |
| // information about the translate bar if it is showing. |
| void GetTranslateInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Takes the specified action on the translate bar. |
| // Uses the JSON interface for input/output. |
| void SelectTranslateOption(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Get the profiles that are currently saved to the DB. |
| // Uses the JSON interface for input/output. |
| void GetAutofillProfile(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Fill in an AutofillProfile with the given profile information. |
| // Uses the JSON interface for input/output. |
| void FillAutofillProfile(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Signs in to sync using the given username and password. |
| // Uses the JSON interface for input/output. |
| void SignInToSync(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Returns info about sync. |
| // Uses the JSON interface for input/output. |
| void GetSyncInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Waits for the ongoing sync cycle to complete. |
| // Uses the JSON interface for input/output. |
| void AwaitSyncCycleCompletion(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Enables sync for one or more sync datatypes. |
| // Uses the JSON interface for input/output. |
| void EnableSyncForDatatypes(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Disables sync for one or more sync datatypes. |
| // Uses the JSON interface for input/output. |
| void DisableSyncForDatatypes(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Translate DictionaryValues of autofill profiles and credit cards to the |
| // data structure used in the browser. |
| // Args: |
| // profiles/cards: the ListValue of profiles/credit cards to translate. |
| // error_message: a pointer to the return string in case of error. |
| static std::vector<AutofillProfile> GetAutofillProfilesFromList( |
| const ListValue& profiles, std::string* error_message); |
| static std::vector<CreditCard> GetCreditCardsFromList( |
| const ListValue& cards, std::string* error_message); |
| |
| // The opposite of the above: translates from the internal data structure |
| // for profiles and credit cards to a ListValue of DictionaryValues. The |
| // caller owns the returned object. |
| static ListValue* GetListFromAutofillProfiles( |
| const std::vector<AutofillProfile*>& autofill_profiles); |
| static ListValue* GetListFromCreditCards( |
| const std::vector<CreditCard*>& credit_cards); |
| |
| // Return the map from the internal data representation to the string value |
| // of auto fill fields and credit card fields. |
| static std::map<AutofillFieldType, std::string> |
| GetAutofillFieldToStringMap(); |
| static std::map<AutofillFieldType, std::string> |
| GetCreditCardFieldToStringMap(); |
| |
| // Get a list of active HTML5 notifications. |
| // Uses the JSON interface for input/output. |
| void GetActiveNotifications(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Close an active HTML5 notification. |
| // Uses the JSON interface for input/output. |
| void CloseNotification(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Waits for the number of active HTML5 notifications to reach a given count. |
| // Uses the JSON interface for input/output. |
| void WaitForNotificationCount(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Gets info about the elements in the NTP. |
| // Uses the JSON interface for input/output. |
| void GetNTPInfo(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Moves a thumbnail in the NTP's Most Visited sites section to a different |
| // index. |
| // Uses the JSON interface for input/output. |
| void MoveNTPMostVisitedThumbnail(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Removes a thumbnail from the NTP's Most Visited sites section. |
| // Uses the JSON interface for input/output. |
| void RemoveNTPMostVisitedThumbnail(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Unpins a thumbnail in the NTP's Most Visited sites section. |
| // Uses the JSON interface for input/output. |
| void UnpinNTPMostVisitedThumbnail(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Restores all thumbnails that have been removed (i.e., blacklisted) from the |
| // NTP's Most Visited sites section. |
| // Uses the JSON interface for input/output. |
| void RestoreAllNTPMostVisitedThumbnails(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Kills the given renderer process and returns after the associated |
| // RenderProcessHost receives notification of its closing. |
| void KillRendererProcess(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Populates the fields of the event parameters with what is found |
| // on the args one. If fails return false and puts the error message in |
| // the error parameter, else returns true. |
| bool BuildWebKeyEventFromArgs(DictionaryValue* args, |
| std::string* error, |
| NativeWebKeyboardEvent* event); |
| |
| // Determines whether each relevant section of the NTP is in thumbnail mode. |
| void GetNTPThumbnailMode(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Puts or removes the specified section of the NTP into/from thumbnail mode. |
| // If the section is put into thumbnail mode, all other relevant sections are |
| // removed from thumbnail mode. |
| void SetNTPThumbnailMode(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Determines whether each relevant section of the NTP is in menu mode. |
| void GetNTPMenuMode(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Puts or removes the specified section of the NTP into/from menu mode. |
| void SetNTPMenuMode(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Launches the specified app from the currently-selected tab. |
| void LaunchApp(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Sets the launch type for the specified app. |
| void SetAppLaunchType(Browser* browser, |
| DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Waits for all tabs to stop loading. |
| void WaitForAllTabsToStopLoading(DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| // Gets the browser and tab index of the given tab. Uses the JSON interface. |
| // Either "tab_id" or "tab_handle" must be specified, but not both. "tab_id" |
| // refers to the ID from the |NavigationController|, while "tab_handle" is |
| // the handle number assigned by the automation system. |
| // Example: |
| // input: { "tab_id": 1, // optional |
| // "tab_handle": 3 // optional |
| // } |
| // output: { "windex": 1, "tab_index": 5 } |
| void GetIndicesFromTab(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Navigates to the given URL. Uses the JSON interface. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 3, |
| // "url": "http://www.google.com", |
| // "navigation_count": 1 // number of navigations to wait for |
| // } |
| // output: { "result": AUTOMATION_MSG_NAVIGATION_SUCCESS } |
| void NavigateToURL(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Executes javascript in the specified frame. Uses the JSON interface. |
| // Waits for a result from the |DOMAutomationController|. The javascript |
| // must send a string. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 1, |
| // "frame_xpath": "//frames[1]", |
| // "javascript": |
| // "window.domAutomationController.send(window.name)", |
| // } |
| // output: { "result": "My Window Name" } |
| // This and some following methods have a suffix of JSON to distingush them |
| // from already existing methods which perform the same function, but use |
| // custom IPC messages instead of the JSON IPC message. These functions will |
| // eventually be replaced with the JSON ones and the JSON suffix will be |
| // dropped. |
| // TODO(kkania): Replace the non-JSON counterparts and drop the JSON suffix. |
| void ExecuteJavascriptJSON( |
| DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Goes forward in the specified tab. Uses the JSON interface. |
| // Example: |
| // input: { "windex": 1, "tab_index": 1 } |
| // output: { "did_go_forward": true, // optional |
| // "result": AUTOMATION_MSG_NAVIGATION_SUCCESS // optional |
| // } |
| void GoForward(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Goes back in the specified tab. Uses the JSON interface. |
| // Example: |
| // input: { "windex": 1, "tab_index": 1 } |
| // output: { "did_go_back": true, // optional |
| // "result": AUTOMATION_MSG_NAVIGATION_SUCCESS // optional |
| // } |
| void GoBack(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Reload the specified tab. Uses the JSON interface. |
| // Example: |
| // input: { "windex": 1, "tab_index": 1 } |
| // output: { "result": AUTOMATION_MSG_NAVIGATION_SUCCESS // optional } |
| void ReloadJSON(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Get the current url of the specified tab. Uses the JSON interface. |
| // Example: |
| // input: { "windex": 1, "tab_index": 1 } |
| // output: { "url": "http://www.google.com" } |
| void GetTabURLJSON(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Get the current url of the specified tab. Uses the JSON interface. |
| // Example: |
| // input: { "windex": 1, "tab_index": 1 } |
| // output: { "title": "Google" } |
| void GetTabTitleJSON(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Captures the entire page of the the specified tab, including the |
| // non-visible portions of the page, and saves the PNG to a file. |
| // Example: |
| // input: { "windex": 1, "tab_index": 1, "path":"/tmp/foo.png"} |
| // output: none |
| void CaptureEntirePageJSON( |
| DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Gets the cookies for the given URL. Uses the JSON interface. |
| // "expiry" refers to the amount of seconds since the Unix epoch. If omitted, |
| // the cookie is valid for the duration of the browser session. |
| // Example: |
| // input: { "url": "http://www.google.com" } |
| // output: { "cookies": [ |
| // { |
| // "name": "PREF", |
| // "value": "123101", |
| // "path": "/", |
| // "domain": "www.google.com", |
| // "secure": false, |
| // "expiry": 1401982012 |
| // } |
| // ] |
| // } |
| void GetCookiesJSON(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Deletes the cookie with the given name for the URL. Uses the JSON |
| // interface. |
| // Example: |
| // input: { |
| // "url": "http://www.google.com", |
| // "name": "my_cookie" |
| // } |
| // output: none |
| void DeleteCookieJSON(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Sets a cookie for the given URL. Uses the JSON interface. |
| // "expiry" refers to the amount of seconds since the Unix epoch. If omitted, |
| // the cookie will be valid for the duration of the browser session. |
| // "domain" refers to the applicable domain for the cookie. Valid domain |
| // choices for the site "http://www.google.com" and resulting cookie |
| // applicability: |
| // [.]www.google.com - applicable on www.google.com and its subdomains |
| // [.]google.com - applicable on google.com and its subdomains |
| // <none> - applicable only on www.google.com |
| // |
| // Example: |
| // input: { "url": "http://www.google.com", |
| // "cookie": { |
| // "name": "PREF", |
| // "value": "123101", |
| // "path": "/", // optional |
| // "domain": ".www.google.com", // optional |
| // "secure": false, // optional |
| // "expiry": 1401982012 // optional |
| // } |
| // } |
| // output: none |
| void SetCookieJSON(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Gets the ID for every open tab. This ID is unique per session. |
| // Example: |
| // input: none |
| // output: { "ids": [4124, 213, 1] } |
| void GetTabIds(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Checks if the given tab ID refers to an open tab. |
| // Example: |
| // input: { "id": 41 } |
| // output: { "is_valid": false } |
| void IsTabIdValid(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Closes the specified tab. |
| // Example: |
| // input: { "windex": 1, "tab_index": 1 } |
| // output: none |
| void CloseTabJSON(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Sends the WebKit events for a mouse click at a given coordinate. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 1, |
| // "button": automation::kLeftButton, |
| // "x": 100, |
| // "y": 100 |
| // } |
| // output: none |
| void WebkitMouseClick(DictionaryValue* args, |
| IPC::Message* message); |
| |
| // Sends the WebKit event for a mouse move to a given coordinate. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 1, |
| // "x": 100, |
| // "y": 100 |
| // } |
| // output: none |
| void WebkitMouseMove(DictionaryValue* args, |
| IPC::Message* message); |
| |
| // Sends the WebKit events for a mouse drag between two coordinates. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 1, |
| // "start_x": 100, |
| // "start_y": 100, |
| // "end_x": 100, |
| // "end_y": 100 |
| // } |
| // output: none |
| void WebkitMouseDrag(DictionaryValue* args, |
| IPC::Message* message); |
| |
| // Sends the WebKit key event with the specified properties. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 1, |
| // "type": automation::kRawKeyDownType, |
| // "nativeKeyCode": ui::VKEY_X, |
| // "windowsKeyCode": ui::VKEY_X, |
| // "unmodifiedText": "x", |
| // "text": "X", |
| // "modifiers": automation::kShiftKeyMask, |
| // "isSystemKey": false |
| // } |
| // output: none |
| void SendWebkitKeyEvent(DictionaryValue* args, |
| IPC::Message* message); |
| |
| // Sends the key event from the OS level to the browser window, |
| // allowing it to be preprocessed by some external application (ie. IME). |
| // Will switch to the tab specified by tab_index before sending the event. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 1, |
| // "keyCode": ui::VKEY_X, |
| // "modifiers": automation::kShiftKeyMask, |
| // } |
| // output: none |
| void SendOSLevelKeyEventToTab(DictionaryValue* args, |
| IPC::Message* message); |
| |
| // Method used as a Task that sends a success AutomationJSONReply. |
| void SendSuccessReply(IPC::Message* reply_message); |
| |
| // Activates the given tab. |
| // Example: |
| // input: { "windex": 1, |
| // "tab_index": 1, |
| // } |
| // output: none |
| void ActivateTabJSON(DictionaryValue* args, IPC::Message* message); |
| |
| // Auto-updates installed extensions. |
| // Uses the JSON interface for input/output. |
| void UpdateExtensionsNow(DictionaryValue* args, IPC::Message* reply_message); |
| |
| // Gets the version of ChromeDriver automation supported by this server. |
| // Example: |
| // input: none |
| // output: { "version": 1 } |
| void GetChromeDriverAutomationVersion(DictionaryValue* args, |
| IPC::Message* message); |
| |
| #if defined(OS_CHROMEOS) |
| void GetLoginInfo(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void LoginAsGuest(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void Login(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void LockScreen(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void UnlockScreen(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void SignoutInScreenLocker(DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| void GetBatteryInfo(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void GetNetworkInfo(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void NetworkScan(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void GetProxySettings(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void SetProxySettings(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void ConnectToWifiNetwork(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void ConnectToHiddenWifiNetwork(DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| void DisconnectFromWifiNetwork(DictionaryValue* args, |
| IPC::Message* reply_message); |
| |
| void GetUpdateInfo(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void UpdateCheck(DictionaryValue* args, IPC::Message* reply_message); |
| |
| void SetReleaseTrack(DictionaryValue* args, IPC::Message* reply_message); |
| #endif // defined(OS_CHROMEOS) |
| |
| void WaitForTabCountToBecome(int browser_handle, |
| int target_tab_count, |
| IPC::Message* reply_message); |
| |
| void WaitForInfoBarCount(int tab_handle, |
| size_t target_count, |
| IPC::Message* reply_message); |
| |
| // Gets the current used encoding name of the page in the specified tab. |
| void GetPageCurrentEncoding(int tab_handle, std::string* current_encoding); |
| |
| void ShutdownSessionService(int handle, bool* result); |
| |
| void SetContentSetting(int handle, |
| const std::string& host, |
| ContentSettingsType content_type, |
| ContentSetting setting, |
| bool* success); |
| |
| // Load all plug-ins on the page. |
| void LoadBlockedPlugins(int tab_handle, bool* success); |
| |
| // Resets to the default theme. |
| void ResetToDefaultTheme(); |
| |
| void WaitForProcessLauncherThreadToGoIdle(IPC::Message* reply_message); |
| |
| // Gets the browser that contains the given tab. |
| void GetParentBrowserOfTab( |
| int tab_handle, int* browser_handle, bool* success); |
| |
| // Callback for history redirect queries. |
| virtual void OnRedirectQueryComplete( |
| HistoryService::Handle request_handle, |
| GURL from_url, |
| bool success, |
| history::RedirectList* redirects); |
| |
| void OnRemoveProvider(); // Called via PostTask |
| |
| #if defined(TOOLKIT_VIEWS) |
| // Keep track of whether a popup menu has been opened since the last time |
| // that StartTrackingPopupMenus has been called. |
| bool popup_menu_opened_; |
| |
| // A temporary object that receives a notification when a popup menu opens. |
| PopupMenuWaiter* popup_menu_waiter_; |
| #endif // defined(TOOLKIT_VIEWS) |
| |
| // Used to wait on various browser sync events. |
| scoped_ptr<ProfileSyncServiceHarness> sync_waiter_; |
| |
| // Handle for an in-process redirect query. We expect only one redirect query |
| // at a time (we should have only one caller, and it will block while waiting |
| // for the results) so there is only one handle. When non-0, indicates a |
| // query in progress. |
| HistoryService::Handle redirect_query_; |
| |
| NotificationRegistrar registrar_; |
| |
| // Used to enumerate browser profiles. |
| scoped_refptr<ImporterList> importer_list_; |
| |
| // The stored data for the ImportSettings operation. |
| ImportSettingsData import_settings_data_; |
| |
| DISALLOW_COPY_AND_ASSIGN(TestingAutomationProvider); |
| }; |
| |
| #endif // CHROME_BROWSER_AUTOMATION_TESTING_AUTOMATION_PROVIDER_H_ |