blob: 192d74db327cd40bee51d9c606378a302fd4df39 [file] [log] [blame]
// 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_TEST_AUTOMATED_UI_TESTS_AUTOMATED_UI_TEST_BASE_H_
#define CHROME_TEST_AUTOMATED_UI_TESTS_AUTOMATED_UI_TEST_BASE_H_
#pragma once
#include <string>
#include "chrome/test/ui/ui_test.h"
class WindowProxy;
class AutomatedUITestBase : public UITest {
protected:
AutomatedUITestBase();
virtual ~AutomatedUITestBase();
virtual void SetUp();
virtual void LogErrorMessage(const std::string &error);
virtual void LogWarningMessage(const std::string &warning);
virtual void LogInfoMessage(const std::string &info);
// Actions
// NOTE: This list is sorted alphabetically.
// All functions are synchronous unless specified with Async.
// Go back in active tab.
// Returns true if successful, false otherwise.
bool BackButton();
// Close the selected tab in the current browser window. The function will
// not try close the tab if it is the only tab of the last normal window, so
// the application is not got closed.
// Returns true if the tab is closed, false otherwise.
bool CloseActiveTab();
// Close the current browser window if it is not the only window left.
// (Closing the last window will get application closed.)
// Returns true if the window is closed, false otherwise.
bool CloseActiveWindow();
// Duplicates the current tab.
// Returns true if a duplicated tab is added.
bool DuplicateTab();
// Drags the active tab. The tab is dragged vertically to remove it from the
// tabstrip. Returns true if the tab is dragged, false otherwise.
// Note: returning true doesn't necessarily create a new window as the tab
// could be dragged in to another window.
bool DragTabOut();
// Drags the active tab.
// If |drag_right| is true, if there is a tab to the right of the active tab,
// the active tab is dragged to that tabs position. If |drag_right| is false,
// if there is a tab to the left of the active tab, the active tab is dragged
// to that tabs position. Returns true if the tab is dragged. If it returns
// false, the tab is not dragged, probably because no other tab exists to
// drag the active tab over.
bool DragActiveTab(bool drag_right);
// Activates "find in page" on the current page. Returns true on success.
bool FindInPage();
// Go forward in active tab.
// Returns true if successful, false otherwise.
bool ForwardButton();
// Opens an OffTheRecord browser window.
bool GoOffTheRecord();
// Navigates to the Home page.
// Returns true if call to activate the accelerator is successful.
bool Home();
// Navigates the activate tab to given url.
bool Navigate(const GURL& url);
// Opens a new tab in the active window using an accelerator.
// Returns true if a new tab is successfully opened.
bool NewTab();
// Opens a new browser window by calling automation()->OpenNewBrowserWindow.
// Then activates the tab opened in the new window.
// Returns true if window is successfully created.
// If optional parameter previous_browser is passed in, it is set to be the
// previous browser window when new window is successfully created, and the
// caller owns previous_browser.
bool OpenAndActivateNewBrowserWindow(
scoped_refptr<BrowserProxy>* previous_browser);
// Reload the active tab.
// Returns true if successful, false otherwise.
bool ReloadPage();
// Restores a previously closed tab.
// Returns true if the tab is successfully restored.
bool RestoreTab();
// Activates the next tab on the active browser window.
// Returns true on success.
bool SelectNextTab();
// Activates the previous tab on the active browser window.
// Returns true on success.
bool SelectPreviousTab();
// Displays the bookmark bar.
// Returns true on success.
bool ShowBookmarkBar();
// Opens the Downloads page in the current active browser window.
// Returns true on success.
bool ShowDownloads();
// Opens the History page in the current active browser window.
// Returns true on success.
bool ShowHistory();
// Runs the specified browser command in the current active browser.
// See Browser::ExecuteCommandWithDisposition() for the list of commands.
// Returns true if the call is successfully dispatched.
// Possible failures include the active window is not a browser window or
// the message to apply the accelerator fails.
bool RunCommandAsync(int browser_command);
// Runs the specified browser command in the current active browser, wait
// and return until the command has finished executing.
// See Browser::ExecuteCommandWithDisposition() for the list of commands.
// Returns true if the call is successfully dispatched and executed.
// Possible failures include the active window is not a browser window, or
// the message to apply the accelerator fails, or the command execution
// fails.
bool RunCommand(int browser_command);
void set_active_browser(BrowserProxy* browser) {
active_browser_ = browser;
}
BrowserProxy* active_browser() const { return active_browser_.get(); }
// Get the selected tab within the current active browser window, then
// create a corresponding TabProxy and transfer the ownership to caller.
// If success return the pointer to the newly created TabProxy and the
// caller owns the TabProxy. Return NULL otherwise.
scoped_refptr<TabProxy> GetActiveTab();
// Returns the WindowProxy associated with the given BrowserProxy
// (transferring ownership of the pointer to the caller) and brings that
// window to the top.
scoped_refptr<WindowProxy> GetAndActivateWindowForBrowser(
BrowserProxy* browser);
private:
scoped_refptr<BrowserProxy> active_browser_;
DISALLOW_COPY_AND_ASSIGN(AutomatedUITestBase);
};
#endif // CHROME_TEST_AUTOMATED_UI_TESTS_AUTOMATED_UI_TEST_BASE_H_