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 17 class AutomationExtension; 18 class DevToolsEventListener; 19 class DevToolsHttpClient; 20 class JavaScriptDialogManager; 21 class PortReservation; 22 class Status; 23 class WebView; 24 class WebViewImpl; 25 26 class ChromeImpl : public Chrome { 27 public: 28 virtual ~ChromeImpl(); 29 30 // Overridden from Chrome: 31 virtual std::string GetVersion() OVERRIDE; 32 virtual ChromeDesktopImpl* GetAsDesktop() OVERRIDE; 33 virtual int GetBuildNo() OVERRIDE; 34 virtual bool HasCrashedWebView() OVERRIDE; 35 virtual Status GetWebViewIds(std::list<std::string>* web_view_ids) OVERRIDE; 36 virtual Status GetWebViewById(const std::string& id, 37 WebView** web_view) OVERRIDE; 38 virtual Status CloseWebView(const std::string& id) OVERRIDE; 39 virtual Status ActivateWebView(const std::string& id) OVERRIDE; 40 virtual Status Quit() OVERRIDE; 41 42 protected: 43 ChromeImpl( 44 scoped_ptr<DevToolsHttpClient> client, 45 ScopedVector<DevToolsEventListener>& devtools_event_listeners, 46 scoped_ptr<PortReservation> port_reservation); 47 48 virtual Status QuitImpl() = 0; 49 50 bool quit_; 51 scoped_ptr<DevToolsHttpClient> devtools_http_client_; 52 53 private: 54 typedef std::list<linked_ptr<WebViewImpl> > WebViewList; 55 56 // Web views in this list are in the same order as they are opened. 57 WebViewList web_views_; 58 ScopedVector<DevToolsEventListener> devtools_event_listeners_; 59 scoped_ptr<PortReservation> port_reservation_; 60 }; 61 62 #endif // CHROME_TEST_CHROMEDRIVER_CHROME_CHROME_IMPL_H_ 63