1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_ 6#define CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_ 7 8#include <list> 9#include <string> 10 11#include "base/compiler_specific.h" 12#include "base/memory/linked_ptr.h" 13#include "base/memory/scoped_ptr.h" 14#include "base/memory/scoped_vector.h" 15#include "chrome/test/chromedriver/chrome/chrome.h" 16 17class AutomationExtension; 18struct BrowserInfo; 19class DevToolsClient; 20class DevToolsEventListener; 21class DevToolsHttpClient; 22class JavaScriptDialogManager; 23class PortReservation; 24class Status; 25class WebView; 26class WebViewImpl; 27 28class ChromeImpl : public Chrome { 29 public: 30 virtual ~ChromeImpl(); 31 32 // Overridden from Chrome: 33 virtual ChromeDesktopImpl* GetAsDesktop() OVERRIDE; 34 virtual const BrowserInfo* GetBrowserInfo() OVERRIDE; 35 virtual bool HasCrashedWebView() OVERRIDE; 36 virtual Status GetWebViewIds(std::list<std::string>* web_view_ids) OVERRIDE; 37 virtual Status GetWebViewById(const std::string& id, 38 WebView** web_view) OVERRIDE; 39 virtual Status CloseWebView(const std::string& id) OVERRIDE; 40 virtual Status ActivateWebView(const std::string& id) OVERRIDE; 41 virtual bool IsMobileEmulationEnabled() const OVERRIDE; 42 virtual Status Quit() OVERRIDE; 43 44 protected: 45 ChromeImpl( 46 scoped_ptr<DevToolsHttpClient> http_client, 47 scoped_ptr<DevToolsClient> websocket_client, 48 ScopedVector<DevToolsEventListener>& devtools_event_listeners, 49 scoped_ptr<PortReservation> port_reservation); 50 51 virtual Status QuitImpl() = 0; 52 53 bool quit_; 54 scoped_ptr<DevToolsHttpClient> devtools_http_client_; 55 scoped_ptr<DevToolsClient> devtools_websocket_client_; 56 57 private: 58 typedef std::list<linked_ptr<WebViewImpl> > WebViewList; 59 60 // Web views in this list are in the same order as they are opened. 61 WebViewList web_views_; 62 ScopedVector<DevToolsEventListener> devtools_event_listeners_; 63 scoped_ptr<PortReservation> port_reservation_; 64}; 65 66#endif // CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_ 67