1326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira// Use of this source code is governed by a BSD-style license that can be 3326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira// found in the LICENSE file. 4326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 5326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#ifndef CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_ 6326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#define CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_ 7326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 8326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#include <list> 9326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#include <string> 10326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 11326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#include "base/compiler_specific.h" 12326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#include "base/memory/linked_ptr.h" 13326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#include "base/memory/scoped_ptr.h" 14326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#include "base/memory/scoped_vector.h" 15326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#include "chrome/test/chromedriver/chrome/chrome.h" 16326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 17326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereiraclass AutomationExtension; 1830e2c24b056542f3b1b438aeb798305d1226d0c8Andy Huangstruct BrowserInfo; 19326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereiraclass DevToolsClient; 20b8331b4565566ca733997398e8c07a26cd2bee98Andy Huangclass DevToolsEventListener; 2194898ce43cba909e53378deb267658b9cc05ffeeAndrew Sappersteinclass DevToolsHttpClient; 22326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereiraclass JavaScriptDialogManager; 23326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereiraclass PortReservation; 24b8331b4565566ca733997398e8c07a26cd2bee98Andy Huangclass Status; 25326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereiraclass WebView; 26326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereiraclass WebViewImpl; 27326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 28326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereiraclass ChromeImpl : public Chrome { 2925dac86c30062d6488a39724794b52f44023dc4fBrian Attwell public: 30326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira virtual ~ChromeImpl(); 31326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 32326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira // Overridden from Chrome: 33326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira virtual ChromeDesktopImpl* GetAsDesktop() OVERRIDE; 34326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira virtual const BrowserInfo* GetBrowserInfo() OVERRIDE; 35326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira virtual bool HasCrashedWebView() OVERRIDE; 362b806edc62eb8e83c77edc471fda4652281a15c4James Lemieux virtual Status GetWebViewIds(std::list<std::string>* web_view_ids) OVERRIDE; 37980f55f9c46e0b490aa0a6662a1acef1fcb68782Brian Attwell virtual Status GetWebViewById(const std::string& id, 388913ca6aebe6017efe8060b61b8ad38eda95aa8bAndrew Sapperstein WebView** web_view) OVERRIDE; 398913ca6aebe6017efe8060b61b8ad38eda95aa8bAndrew Sapperstein virtual Status CloseWebView(const std::string& id) OVERRIDE; 408913ca6aebe6017efe8060b61b8ad38eda95aa8bAndrew Sapperstein virtual Status ActivateWebView(const std::string& id) OVERRIDE; 41326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira virtual bool IsMobileEmulationEnabled() const OVERRIDE; 42326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira virtual Status Quit() OVERRIDE; 43326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 44326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira protected: 45326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira ChromeImpl( 46326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira scoped_ptr<DevToolsHttpClient> http_client, 47b8331b4565566ca733997398e8c07a26cd2bee98Andy Huang scoped_ptr<DevToolsClient> websocket_client, 48326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira ScopedVector<DevToolsEventListener>& devtools_event_listeners, 49326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira scoped_ptr<PortReservation> port_reservation); 50b8331b4565566ca733997398e8c07a26cd2bee98Andy Huang 51326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira virtual Status QuitImpl() = 0; 52326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 53326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira bool quit_; 54326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira scoped_ptr<DevToolsHttpClient> devtools_http_client_; 558913ca6aebe6017efe8060b61b8ad38eda95aa8bAndrew Sapperstein scoped_ptr<DevToolsClient> devtools_websocket_client_; 568913ca6aebe6017efe8060b61b8ad38eda95aa8bAndrew Sapperstein 57326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira private: 58326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira typedef std::list<linked_ptr<WebViewImpl> > WebViewList; 598913ca6aebe6017efe8060b61b8ad38eda95aa8bAndrew Sapperstein 608913ca6aebe6017efe8060b61b8ad38eda95aa8bAndrew Sapperstein // Web views in this list are in the same order as they are opened. 61326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira WebViewList web_views_; 62326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira ScopedVector<DevToolsEventListener> devtools_event_listeners_; 63326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira scoped_ptr<PortReservation> port_reservation_; 64326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira}; 65326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira 66326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira#endif // CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_ 67326c660df0a0a36a52ae74d8bafaa22d6f253561Mindy Pereira