Home | History | Annotate | Download | only in chromedriver
      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.
      4 
      5 #ifndef CHROME_TEST_CHROMEDRIVER_ELEMENT_COMMANDS_H_
      6 #define CHROME_TEST_CHROMEDRIVER_ELEMENT_COMMANDS_H_
      7 
      8 #include <string>
      9 
     10 #include "base/callback_forward.h"
     11 #include "base/memory/scoped_ptr.h"
     12 
     13 namespace base {
     14 class DictionaryValue;
     15 class Value;
     16 }
     17 
     18 struct Session;
     19 class Status;
     20 class WebView;
     21 
     22 typedef base::Callback<Status(
     23     Session* session,
     24     WebView* web_view,
     25     const std::string&,
     26     const base::DictionaryValue&,
     27     scoped_ptr<base::Value>*)> ElementCommand;
     28 
     29 // Execute a command on a specific element.
     30 Status ExecuteElementCommand(
     31     const ElementCommand& command,
     32     Session* session,
     33     WebView* web_view,
     34     const base::DictionaryValue& params,
     35     scoped_ptr<base::Value>* value);
     36 
     37 // Search for an element on the page, starting from the given element.
     38 Status ExecuteFindChildElement(
     39     int interval_ms,
     40     Session* session,
     41     WebView* web_view,
     42     const std::string& element_id,
     43     const base::DictionaryValue& params,
     44     scoped_ptr<base::Value>* value);
     45 
     46 // Search for multiple elements on the page, starting from the given element.
     47 Status ExecuteFindChildElements(
     48     int interval_ms,
     49     Session* session,
     50     WebView* web_view,
     51     const std::string& element_id,
     52     const base::DictionaryValue& params,
     53     scoped_ptr<base::Value>* value);
     54 
     55 // Move the mouse to the given element.
     56 Status ExecuteHoverOverElement(
     57     Session* session,
     58     WebView* web_view,
     59     const std::string& element_id,
     60     const base::DictionaryValue& params,
     61     scoped_ptr<base::Value>* value);
     62 
     63 // Click on the element.
     64 Status ExecuteClickElement(
     65     Session* session,
     66     WebView* web_view,
     67     const std::string& element_id,
     68     const base::DictionaryValue& params,
     69     scoped_ptr<base::Value>* value);
     70 
     71 // Touch click on the element.
     72 Status ExecuteTouchSingleTap(
     73     Session* session,
     74     WebView* web_view,
     75     const std::string& element_id,
     76     const base::DictionaryValue& params,
     77     scoped_ptr<base::Value>* value);
     78 
     79 // Touch flick starting on the element.
     80 Status ExecuteFlick(
     81     Session* session,
     82     WebView* web_view,
     83     const std::string& element_id,
     84     const base::DictionaryValue& params,
     85     scoped_ptr<base::Value>* value);
     86 
     87 // Clear a TEXTAREA or text INPUT element's value.
     88 Status ExecuteClearElement(
     89     Session* session,
     90     WebView* web_view,
     91     const std::string& element_id,
     92     const base::DictionaryValue& params,
     93     scoped_ptr<base::Value>* value);
     94 
     95 // Send a sequence of key strokes to an element.
     96 Status ExecuteSendKeysToElement(
     97     Session* session,
     98     WebView* web_view,
     99     const std::string& element_id,
    100     const base::DictionaryValue& params,
    101     scoped_ptr<base::Value>* value);
    102 
    103 // Submit a form element.
    104 Status ExecuteSubmitElement(
    105     Session* session,
    106     WebView* web_view,
    107     const std::string& element_id,
    108     const base::DictionaryValue& params,
    109     scoped_ptr<base::Value>* value);
    110 
    111 // Returns the text of a given element.
    112 Status ExecuteGetElementText(
    113     Session* session,
    114     WebView* web_view,
    115     const std::string& element_id,
    116     const base::DictionaryValue& params,
    117     scoped_ptr<base::Value>* value);
    118 
    119 // Returns the value of a given element.
    120 Status ExecuteGetElementValue(
    121     Session* session,
    122     WebView* web_view,
    123     const std::string& element_id,
    124     const base::DictionaryValue& params,
    125     scoped_ptr<base::Value>* value);
    126 
    127 // Returns the lower case tag name of a given element.
    128 Status ExecuteGetElementTagName(
    129     Session* session,
    130     WebView* web_view,
    131     const std::string& element_id,
    132     const base::DictionaryValue& params,
    133     scoped_ptr<base::Value>* value);
    134 
    135 Status ExecuteIsElementSelected(
    136     Session* session,
    137     WebView* web_view,
    138     const std::string& element_id,
    139     const base::DictionaryValue& params,
    140     scoped_ptr<base::Value>* value);
    141 
    142 Status ExecuteIsElementEnabled(
    143     Session* session,
    144     WebView* web_view,
    145     const std::string& element_id,
    146     const base::DictionaryValue& params,
    147     scoped_ptr<base::Value>* value);
    148 
    149 Status ExecuteIsElementDisplayed(
    150     Session* session,
    151     WebView* web_view,
    152     const std::string& element_id,
    153     const base::DictionaryValue& params,
    154     scoped_ptr<base::Value>* value);
    155 
    156 // Returns the location of a given element in page coordinates.
    157 Status ExecuteGetElementLocation(
    158     Session* session,
    159     WebView* web_view,
    160     const std::string& element_id,
    161     const base::DictionaryValue& params,
    162     scoped_ptr<base::Value>* value);
    163 
    164 // Returns the location of a given element in client coordinates, after
    165 // scrolling it into view.
    166 Status ExecuteGetElementLocationOnceScrolledIntoView(
    167     Session* session,
    168     WebView* web_view,
    169     const std::string& element_id,
    170     const base::DictionaryValue& params,
    171     scoped_ptr<base::Value>* value);
    172 
    173 Status ExecuteGetElementSize(
    174     Session* session,
    175     WebView* web_view,
    176     const std::string& element_id,
    177     const base::DictionaryValue& params,
    178     scoped_ptr<base::Value>* value);
    179 
    180 Status ExecuteGetElementAttribute(
    181     Session* session,
    182     WebView* web_view,
    183     const std::string& element_id,
    184     const base::DictionaryValue& params,
    185     scoped_ptr<base::Value>* value);
    186 
    187 // Returns the effective style for a given property of the specified element.
    188 Status ExecuteGetElementValueOfCSSProperty(
    189     Session* session,
    190     WebView* web_view,
    191     const std::string& element_id,
    192     const base::DictionaryValue& params,
    193     scoped_ptr<base::Value>* value);
    194 
    195 // Returns whether the two given elements are equivalent.
    196 Status ExecuteElementEquals(
    197     Session* session,
    198     WebView* web_view,
    199     const std::string& element_id,
    200     const base::DictionaryValue& params,
    201     scoped_ptr<base::Value>* value);
    202 
    203 #endif  // CHROME_TEST_CHROMEDRIVER_ELEMENT_COMMANDS_H_
    204