blob: 0d9871d7d36dc937f9452d6e6a984d91dce50be0 [file] [log] [blame]
// Copyright (c) 2012 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_CHROMEDRIVER_CHROME_CHROME_IMPL_H_
#define CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_
#include <list>
#include <memory>
#include <string>
#include <vector>
#include "base/compiler_specific.h"
#include "base/values.h"
#include "chrome/test/chromedriver/chrome/chrome.h"
struct BrowserInfo;
class DevToolsClient;
class DevToolsEventListener;
class DevToolsHttpClient;
class Status;
class WebView;
class WebViewImpl;
class WebViewsInfo;
class ChromeImpl : public Chrome {
public:
~ChromeImpl() override;
// Overridden from Chrome:
Status GetAsDesktop(ChromeDesktopImpl** desktop) override;
const BrowserInfo* GetBrowserInfo() const override;
bool HasCrashedWebView() override;
Status GetWebViewIdForFirstTab(std::string* web_view_id,
bool w3c_complaint) override;
Status GetWebViewIds(std::list<std::string>* web_view_ids,
bool w3c_compliant) override;
Status GetWebViewById(const std::string& id, WebView** web_view) override;
Status GetWindowSize(const std::string& id, int* width, int* height) override;
Status SetWindowSize(const std::string& target_id,
int width, int height) override;
Status SetWindowRect(const std::string& target_id,
const base::DictionaryValue& params) override;
Status GetWindowPosition(const std::string& id, int* x, int* y) override;
Status SetWindowPosition(const std::string& target_id, int x, int y) override;
Status MaximizeWindow(const std::string& target_id) override;
Status MinimizeWindow(const std::string& target_id) override;
Status FullScreenWindow(const std::string& target_id) override;
Status CloseWebView(const std::string& id) override;
Status ActivateWebView(const std::string& id) override;
Status SetAcceptInsecureCerts() override;
bool IsMobileEmulationEnabled() const override;
bool HasTouchScreen() const override;
std::string page_load_strategy() const override;
Status Quit() override;
protected:
ChromeImpl(std::unique_ptr<DevToolsHttpClient> http_client,
std::unique_ptr<DevToolsClient> websocket_client,
std::vector<std::unique_ptr<DevToolsEventListener>>
devtools_event_listeners,
std::string page_load_strategy);
virtual Status QuitImpl() = 0;
struct Window {
int id;
std::string state;
int left;
int top;
int width;
int height;
};
virtual Status GetWindow(const std::string& target_id, Window* window);
Status ParseWindow(std::unique_ptr<base::DictionaryValue> params,
Window* window);
Status ParseWindowBounds(std::unique_ptr<base::DictionaryValue> params,
Window* window);
Status GetWindowBounds(int window_id, Window* window);
Status SetWindowBounds(int window_id,
std::unique_ptr<base::DictionaryValue> bounds);
bool quit_;
std::unique_ptr<DevToolsHttpClient> devtools_http_client_;
std::unique_ptr<DevToolsClient> devtools_websocket_client_;
private:
void UpdateWebViews(const WebViewsInfo& views_info, bool w3c_compliant);
// Web views in this list are in the same order as they are opened.
std::list<std::unique_ptr<WebViewImpl>> web_views_;
std::vector<std::unique_ptr<DevToolsEventListener>> devtools_event_listeners_;
std::string page_load_strategy_;
};
#endif // CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_