Roll src/third_party/WebKit bf18a82:a9cee16 (svn 185297:185304)
[chromium-blink-merge.git] / chrome / test / chromedriver / element_util.h
blob0fbd766179b2d9c1689e76d5d7478fcb1577936c
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_ELEMENT_UTIL_H_
6 #define CHROME_TEST_CHROMEDRIVER_ELEMENT_UTIL_H_
8 #include <string>
10 #include "base/memory/scoped_ptr.h"
11 #include "chrome/test/chromedriver/basic_types.h"
13 namespace base {
14 class DictionaryValue;
15 class ListValue;
16 class Value;
19 struct Session;
20 class Status;
21 class WebView;
23 base::DictionaryValue* CreateElement(const std::string& element_id);
25 base::Value* CreateValueFrom(const WebPoint& point);
27 // |root_element_id| could be null when no root element is given.
28 Status FindElement(
29 int interval_ms,
30 bool only_one,
31 const std::string* root_element_id,
32 Session* session,
33 WebView* web_view,
34 const base::DictionaryValue& params,
35 scoped_ptr<base::Value>* value);
37 Status GetActiveElement(
38 Session* session,
39 WebView* web_view,
40 scoped_ptr<base::Value>* value);
42 Status IsElementFocused(
43 Session* session,
44 WebView* web_view,
45 const std::string& element_id,
46 bool* is_focused);
48 Status GetElementAttribute(
49 Session* session,
50 WebView* web_view,
51 const std::string& element_id,
52 const std::string& attribute_name,
53 scoped_ptr<base::Value>* value);
55 Status IsElementAttributeEqualToIgnoreCase(
56 Session* session,
57 WebView* web_view,
58 const std::string& element_id,
59 const std::string& attribute_name,
60 const std::string& attribute_value,
61 bool* is_equal);
63 Status GetElementClickableLocation(
64 Session* session,
65 WebView* web_view,
66 const std::string& element_id,
67 WebPoint* location);
69 Status GetElementEffectiveStyle(
70 Session* session,
71 WebView* web_view,
72 const std::string& element_id,
73 const std::string& property_name,
74 std::string* property_value);
76 Status GetElementRegion(
77 Session* session,
78 WebView* web_view,
79 const std::string& element_id,
80 WebRect* rect);
82 Status GetElementTagName(
83 Session* session,
84 WebView* web_view,
85 const std::string& element_id,
86 std::string* name);
88 Status GetElementSize(
89 Session* session,
90 WebView* web_view,
91 const std::string& element_id,
92 WebSize* size);
94 Status IsElementDisplayed(
95 Session* session,
96 WebView* web_view,
97 const std::string& element_id,
98 bool ignore_opacity,
99 bool* is_displayed);
101 Status IsElementEnabled(
102 Session* session,
103 WebView* web_view,
104 const std::string& element_id,
105 bool* is_enabled);
107 Status IsOptionElementSelected(
108 Session* session,
109 WebView* web_view,
110 const std::string& element_id,
111 bool* is_selected);
113 Status IsOptionElementTogglable(
114 Session* session,
115 WebView* web_view,
116 const std::string& element_id,
117 bool* is_togglable);
119 Status SetOptionElementSelected(
120 Session* session,
121 WebView* web_view,
122 const std::string& element_id,
123 bool selected);
125 Status ToggleOptionElement(
126 Session* session,
127 WebView* web_view,
128 const std::string& element_id);
130 Status ScrollElementIntoView(
131 Session* session,
132 WebView* web_view,
133 const std::string& element_id,
134 WebPoint* location);
136 // |element_id| refers to the element which is to be scrolled into view.
137 // |clickable_element_id| refers to the element needing clickable verification.
138 // They are usually the same, but can be different. This is useful when an image
139 // uses map/area. The image is scrolled, but check clickable against the area.
140 // If |clickable_element_id| is "", no verification will be performed.
141 Status ScrollElementRegionIntoView(
142 Session* session,
143 WebView* web_view,
144 const std::string& element_id,
145 const WebRect& region,
146 bool center,
147 const std::string& clickable_element_id,
148 WebPoint* location);
150 #endif // CHROME_TEST_CHROMEDRIVER_ELEMENT_UTIL_H_