Skip to content

Commit

Permalink
[bazel] Compile atoms and export as constants in C and Java
Browse files Browse the repository at this point in the history
This is functionality that is currently within CrazyFun, and is used
by iosDriver, one of the android drivers, and the IE driver.
  • Loading branch information
shs96c committed Sep 21, 2019
1 parent 23eb9a9 commit 7bdbb85
Show file tree
Hide file tree
Showing 23 changed files with 1,304 additions and 150 deletions.
7 changes: 0 additions & 7 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -287,13 +287,6 @@ ie_generate_type_mapping(:name => "ie_result_type_cpp",
:type => "cpp",
:out => "cpp/iedriver/IEReturnTypes.h")

# Generate a Java class for mapping between magic numbers and Java static
# class members describing them.
ie_generate_type_mapping(:name => "ie_result_type_java",
:src => "cpp/iedriver/result_types.txt",
:type => "java",
:out => "java/client/src/org/openqa/selenium/ie/IeReturnTypes.java")


task :javadocs => [:common, :firefox, :ie, :remote, :support, :chrome, :selenium] do
rm_rf "build/javadoc"
Expand Down
2 changes: 1 addition & 1 deletion java/client/test/org/openqa/selenium/atoms/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ load("//java:defs.bzl", "java_test_suite")

copy_file(
name = "execute_script",
src = "//javascript/atoms/fragments:execute_script.js",
src = "//javascript/atoms/fragments:execute-script.js",
out = "execute_script.js",
)

Expand Down
50 changes: 50 additions & 0 deletions javascript/android-atoms/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
load("//javascript:defs.bzl", "closure_lang_file")

closure_lang_file(
name = "android-atoms",
out = "Atoms.java",
lang = "java",
preamble = """
package org.openqa.selenium.android.library;
/**
* The WebDriver atoms are used to ensure consistent behaviour cross-browser.
*/
""",
deps = [
"//javascript/atoms/fragments:execute-async-script-android",
"//javascript/atoms/fragments:execute-script-android",
"//javascript/webdriver/atoms/inject:active-element-android",
"//javascript/webdriver/atoms/inject:clear-android",
"//javascript/webdriver/atoms/inject:clear-local-storage-android",
"//javascript/webdriver/atoms/inject:clear-session-storage-android",
"//javascript/webdriver/atoms/inject:click-android",
"//javascript/webdriver/atoms/inject:default-content-android",
"//javascript/webdriver/atoms/inject:find-element-fragment-android",
"//javascript/webdriver/atoms/inject:find-elements-android",
"//javascript/webdriver/atoms/inject:frame-by-id-or-name-android",
"//javascript/webdriver/atoms/inject:frame-by-index-android",
"//javascript/webdriver/atoms/inject:get-appcache-status-android",
"//javascript/webdriver/atoms/inject:get-attribute-value-android",
"//javascript/webdriver/atoms/inject:get-frame-window-android",
"//javascript/webdriver/atoms/inject:get-local-storage-item-android",
"//javascript/webdriver/atoms/inject:get-local-storage-keys-android",
"//javascript/webdriver/atoms/inject:get-local-storage-size-android",
"//javascript/webdriver/atoms/inject:get-session-storage-item-android",
"//javascript/webdriver/atoms/inject:get-session-storage-keys-android",
"//javascript/webdriver/atoms/inject:get-session-storage-size-android",
"//javascript/webdriver/atoms/inject:get-size-android",
"//javascript/webdriver/atoms/inject:get-text-android",
"//javascript/webdriver/atoms/inject:get-top-left-coordinates-android",
"//javascript/webdriver/atoms/inject:get-value-of-css-property-android",
"//javascript/webdriver/atoms/inject:is-displayed-android",
"//javascript/webdriver/atoms/inject:is-enabled-android",
"//javascript/webdriver/atoms/inject:is-selected-android",
"//javascript/webdriver/atoms/inject:remove-local-storage-item-android",
"//javascript/webdriver/atoms/inject:remove-session-storage-item-android",
"//javascript/webdriver/atoms/inject:set-local-storage-item-android",
"//javascript/webdriver/atoms/inject:set-session-storage-item-android",
"//javascript/webdriver/atoms/inject:submit-android",
],
)
38 changes: 37 additions & 1 deletion javascript/atoms/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_deps", "closure_js_library")
load("//javascript:rules.bzl", "closure_test_suite")
load("//javascript:defs.bzl", "closure_test_suite")

package(default_visibility = ["//visibility:public"])

Expand All @@ -26,6 +26,12 @@ closure_js_library(
"JSC_STRICT_INEXISTENT_PROPERTY",
"JSC_UNKNOWN_EXPR_TYPE",
],
visibility = [
"//javascript/atoms/fragments:__pkg__",
"//javascript/selenium-atoms:__pkg__",
"//javascript/webdriver/atoms:__pkg__",
"//javascript/webdriver/atoms/inject:__pkg__",
],
deps = [
":bot",
":devices",
Expand Down Expand Up @@ -143,9 +149,34 @@ closure_js_library(
],
)

closure_js_library(
name = "frame",
srcs = ["frame.js"],
suppress = [
"JSC_IMPLICITLY_NULLABLE_JSDOC",
"JSC_NULLABLE_RETURN_WITH_NAME",
"JSC_UNKNOWN_EXPR_TYPE",
],
visibility = [
"//javascript/webdriver/atoms/inject:__pkg__",
],
deps = [
":bot",
":dom",
":errors",
":locators",
"@io_bazel_rules_closure//closure/library",
],
)

closure_js_library(
name = "html5",
srcs = glob(["html5/*.js"]),
suppress = [
"JSC_IMPLICITLY_NULLABLE_JSDOC",
"JSC_NULLABLE_RETURN_WITH_NAME",
"JSC_UNKNOWN_EXPR_TYPE",
],
deps = [
":bot",
":errors",
Expand All @@ -163,6 +194,11 @@ closure_js_library(
"JSC_STRICT_INEXISTENT_PROPERTY",
"JSC_UNKNOWN_EXPR_TYPE",
],
visibility = [
"//javascript/atoms/fragments:__pkg__",
"//javascript/selenium-atoms:__pkg__",
"//javascript/webdriver/atoms/inject:__pkg__",
],
deps = [
":bot",
":errors",
Expand Down
164 changes: 158 additions & 6 deletions javascript/atoms/fragments/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,31 +1,116 @@
load("//javascript:fragment.bzl", "closure_fragment")
load("//javascript:defs.bzl", "closure_fragment")

closure_fragment(
name = "clear",
function = "bot.action.clear",
module = "bot.action",
visibility = [
"//javascript/chrome-driver:__pkg__",
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:action",
],
)

closure_fragment(
name = "execute_script",
name = "click",
function = "bot.action.click",
module = "bot.action",
visibility = [
"//javascript/chrome-driver:__pkg__",
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:action",
],
)

closure_fragment(
name = "execute-async-script",
function = "bot.inject.executeAsyncScript",
module = "bot.inject",
visibility = [
"//javascript/android-atoms:__pkg__",
"//javascript/chrome-driver:__pkg__",
],
deps = [
"//javascript/atoms:inject",
],
)

closure_fragment(
name = "execute-script",
function = "bot.inject.executeScript",
module = "bot.inject",
visibility = ["//java/client/test/org/openqa/selenium/atoms:__pkg__"],
visibility = [
"//java/client/test/org/openqa/selenium/atoms:__pkg__",
"//javascript/android-atoms:__pkg__",
"//javascript/chrome-driver:__pkg__",
],
deps = [
"//javascript/atoms:inject",
],
)

closure_fragment(
name = "execute-sql",
function = "bot.storage.database.executeSql",
module = "bot.storage.database",
visibility = [
"//javascript/chrome-driver:__pkg__",
],
deps = [
"//javascript/atoms:html5",
],
)

closure_fragment(
name = "get-effective-style",
function = "bot.dom.getEffectiveStyle",
module = "bot.dom",
visibility = [
"//javascript/chrome-driver:__pkg__",
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:dom",
],
)

closure_fragment(
name = "get-location",
function = "bot.geolocation.getCurrentPosition",
module = "bot.geolocation",
visibility = [
"//javascript/chrome-driver:__pkg__",
],
deps = [
"//javascript/atoms:html5",
],
)

closure_fragment(
name = "get-size",
function = "goog.style.getSize",
module = "goog.style",
visibility = [
"//javascript/chrome-driver:__pkg__",
],
deps = [
"@io_bazel_rules_closure//closure/library",
],
)

closure_fragment(
name = "is-displayed",
function = "bot.dom.isShown",
module = "bot.dom",
visibility = [
"//dotnet/src/webdriver:__pkg__",
"//java/client/src/org/openqa/selenium/remote:__pkg__",
"//javascript/chrome-driver:__pkg__",
"//javascript/ie-driver:__pkg__",
"//javascript/node/selenium-webdriver/lib/atoms:__pkg__",
"//py:__pkg__",
],
Expand All @@ -34,10 +119,63 @@ closure_fragment(
],
)

closure_fragment(
name = "is-editable",
function = "bot.dom.isEditable",
module = "bot.dom",
visibility = [
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:dom",
],
)

closure_fragment(
name = "is-enabled",
function = "bot.dom.isEnabled",
module = "bot.dom",
visibility = [
"//javascript/chrome-driver:__pkg__",
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:dom",
],
)

closure_fragment(
name = "is-focusable",
function = "bot.dom.isFocusable",
module = "bot.dom",
visibility = [
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:dom",
],
)

closure_fragment(
name = "is-interactable",
function = "bot.dom.isInteractable",
module = "bot.dom",
visibility = [
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:dom",
],
)

closure_fragment(
name = "find-element",
function = "bot.locators.findElement",
module = "bot.locators",
visibility = [
"//javascript/chrome-driver:__pkg__",
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:locators",
],
Expand All @@ -47,12 +185,13 @@ closure_fragment(
name = "find-elements",
function = "bot.locators.findElements",
module = "bot.locators",
visibility = [
"//java/client/src/org/openqa/selenium/support/locators:__pkg__",
"//javascript/chrome-driver:__pkg__",
],
deps = [
"//javascript/atoms:locators",
],
visibility = [
"//java/client/src/org/openqa/selenium/support/locators:__pkg__",
]
)

closure_fragment(
Expand All @@ -63,3 +202,16 @@ closure_fragment(
"//javascript/atoms:dom",
],
)

closure_fragment(
name = "submit",
function = "bot.action.submit",
module = "bot.action",
visibility = [
"//javascript/chrome-driver:__pkg__",
"//javascript/ie-driver:__pkg__",
],
deps = [
"//javascript/atoms:action",
],
)
9 changes: 4 additions & 5 deletions javascript/atoms/html5/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ goog.require('bot.ErrorCode');
* defaults to the databaseName.
* @param {number=} opt_size The estimated initial quota size of the database;
* default value is 5MB.
* @param {Window=} opt_window The window associated with the database;
* @param {!Window=} opt_window The window associated with the database;
* defaults to the main window.
* @return {Database} The object to access the web database.
* @return {!Database} The object to access the web database.
*
*/
bot.storage.database.openOrCreate = function(databaseName, opt_version,
Expand All @@ -51,7 +51,6 @@ bot.storage.database.openOrCreate = function(databaseName, opt_version,
var displayName = opt_displayName || (databaseName + 'name');
var size = opt_size || 5 * 1024 * 1024;
var win = opt_window || bot.getWindow();
var db;

return win.openDatabase(databaseName, version, displayName, size);
};
Expand All @@ -62,11 +61,11 @@ bot.storage.database.openOrCreate = function(databaseName, opt_version,
*
* @param {string} databaseName The name of the database.
* @param {string} query The SQL statement.
* @param {Array.<*>} args Arguments needed for the SQL statement.
* @param {!Array.<*>} args Arguments needed for the SQL statement.
* @param {!function(!SQLTransaction, !bot.storage.database.ResultSet)}
* queryResultCallback Callback function to be invoked on successful query
* statement execution.
* @param {!function(SQLError)} txErrorCallback
* @param {!function(!SQLError)} txErrorCallback
* Callback function to be invoked on transaction (commit) failure.
* @param {!function()=} opt_txSuccessCallback
* Callback function to be invoked on successful transaction execution.
Expand Down

0 comments on commit 7bdbb85

Please sign in to comment.