1 // Copyright (c) 2013 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.
5 #ifndef CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_
6 #define CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_
11 #include "base/callback.h"
12 #include "base/compiler_specific.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "chrome/test/chromedriver/chrome/web_view.h"
17 class DictionaryValue;
22 class DebuggerTracker;
26 class GeolocationOverrideManager;
27 class HeapSnapshotTaker;
30 class NavigationTracker;
33 class WebViewImpl : public WebView {
35 WebViewImpl(const std::string& id,
37 scoped_ptr<DevToolsClient> client);
38 virtual ~WebViewImpl();
40 // Overridden from WebView:
41 virtual std::string GetId() OVERRIDE;
42 virtual bool WasCrashed() OVERRIDE;
43 virtual Status ConnectIfNecessary() OVERRIDE;
44 virtual Status HandleReceivedEvents() OVERRIDE;
45 virtual Status Load(const std::string& url) OVERRIDE;
46 virtual Status Reload() OVERRIDE;
47 virtual Status EvaluateScript(const std::string& frame,
48 const std::string& expression,
49 scoped_ptr<base::Value>* result) OVERRIDE;
50 virtual Status CallFunction(const std::string& frame,
51 const std::string& function,
52 const base::ListValue& args,
53 scoped_ptr<base::Value>* result) OVERRIDE;
54 virtual Status CallAsyncFunction(const std::string& frame,
55 const std::string& function,
56 const base::ListValue& args,
57 const base::TimeDelta& timeout,
58 scoped_ptr<base::Value>* result) OVERRIDE;
59 virtual Status CallUserAsyncFunction(
60 const std::string& frame,
61 const std::string& function,
62 const base::ListValue& args,
63 const base::TimeDelta& timeout,
64 scoped_ptr<base::Value>* result) OVERRIDE;
65 virtual Status GetFrameByFunction(const std::string& frame,
66 const std::string& function,
67 const base::ListValue& args,
68 std::string* out_frame) OVERRIDE;
69 virtual Status DispatchMouseEvents(
70 const std::list<MouseEvent>& events, const std::string& frame) OVERRIDE;
71 virtual Status DispatchTouchEvent(const TouchEvent& event) OVERRIDE;
72 virtual Status DispatchTouchEvents(
73 const std::list<TouchEvent>& events) OVERRIDE;
74 virtual Status DispatchKeyEvents(const std::list<KeyEvent>& events) OVERRIDE;
75 virtual Status GetCookies(scoped_ptr<base::ListValue>* cookies) OVERRIDE;
76 virtual Status DeleteCookie(const std::string& name,
77 const std::string& url) OVERRIDE;
78 virtual Status WaitForPendingNavigations(const std::string& frame_id,
79 const base::TimeDelta& timeout,
80 bool stop_load_on_timeout) OVERRIDE;
81 virtual Status IsPendingNavigation(
82 const std::string& frame_id, bool* is_pending) OVERRIDE;
83 virtual JavaScriptDialogManager* GetJavaScriptDialogManager() OVERRIDE;
84 virtual Status OverrideGeolocation(const Geoposition& geoposition) OVERRIDE;
85 virtual Status CaptureScreenshot(std::string* screenshot) OVERRIDE;
86 virtual Status SetFileInputFiles(
87 const std::string& frame,
88 const base::DictionaryValue& element,
89 const std::vector<base::FilePath>& files) OVERRIDE;
90 virtual Status TakeHeapSnapshot(scoped_ptr<base::Value>* snapshot) OVERRIDE;
93 Status CallAsyncFunctionInternal(const std::string& frame,
94 const std::string& function,
95 const base::ListValue& args,
96 bool is_user_supplied,
97 const base::TimeDelta& timeout,
98 scoped_ptr<base::Value>* result);
99 Status IsNotPendingNavigation(const std::string& frame_id,
100 bool* is_not_pending);
103 scoped_ptr<DomTracker> dom_tracker_;
104 scoped_ptr<FrameTracker> frame_tracker_;
105 scoped_ptr<NavigationTracker> navigation_tracker_;
106 scoped_ptr<JavaScriptDialogManager> dialog_manager_;
107 scoped_ptr<GeolocationOverrideManager> geolocation_override_manager_;
108 scoped_ptr<HeapSnapshotTaker> heap_snapshot_taker_;
109 scoped_ptr<DebuggerTracker> debugger_;
110 scoped_ptr<DevToolsClient> client_;
115 enum EvaluateScriptReturnType {
119 Status EvaluateScript(DevToolsClient* client,
121 const std::string& expression,
122 EvaluateScriptReturnType return_type,
123 scoped_ptr<base::DictionaryValue>* result);
124 Status EvaluateScriptAndGetObject(DevToolsClient* client,
126 const std::string& expression,
128 std::string* object_id);
129 Status EvaluateScriptAndGetValue(DevToolsClient* client,
131 const std::string& expression,
132 scoped_ptr<base::Value>* result);
133 Status ParseCallFunctionResult(const base::Value& temp_result,
134 scoped_ptr<base::Value>* result);
135 Status GetNodeIdFromFunction(DevToolsClient* client,
137 const std::string& function,
138 const base::ListValue& args,
142 } // namespace internal
144 #endif // CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_