Commit 6a308947 authored by Tatiana Buldina's avatar Tatiana Buldina Committed by Commit Bot

[ChromeDriver] Do not return stale window handle

Move ExecuteGetCurrentWindowHandle() from session_commands.cc
to window_commands.cc, to make use of automatic window state
validation done for window commands.

Bug: chromedriver:1404
Change-Id: Id5ac4c7cea5323f12612b2dfb4dff2b819ce22ff
Reviewed-on: https://chromium-review.googlesource.com/1257362Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Commit-Queue: Tatiana Buldina <buldina@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595938}
parent 9ffac488
......@@ -58,10 +58,6 @@ const int k2GThroughput = 250 * 1024;
const char kWindowHandlePrefix[] = "CDwindow-";
std::string WebViewIdToWindowHandle(const std::string& web_view_id) {
return kWindowHandlePrefix + web_view_id;
}
bool WindowHandleToWebViewId(const std::string& window_handle,
std::string* web_view_id) {
if (!base::StartsWith(window_handle, kWindowHandlePrefix,
......@@ -86,6 +82,10 @@ Status EvaluateScriptAndIgnoreResult(Session* session, std::string expression) {
} // namespace
std::string WebViewIdToWindowHandle(const std::string& web_view_id) {
return kWindowHandlePrefix + web_view_id;
}
InitSessionParams::InitSessionParams(
scoped_refptr<URLRequestContextGetter> context_getter,
const SyncWebSocketFactory& socket_factory,
......@@ -391,18 +391,6 @@ Status ExecuteGetSessionCapabilities(Session* session,
return Status(kOk);
}
Status ExecuteGetCurrentWindowHandle(Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value) {
WebView* web_view = NULL;
Status status = session->GetTargetWindow(&web_view);
if (status.IsError())
return status;
value->reset(new base::Value(WebViewIdToWindowHandle(web_view->GetId())));
return Status(kOk);
}
Status ExecuteLaunchApp(Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value) {
......
......@@ -40,6 +40,8 @@ bool MergeCapabilities(const base::DictionaryValue* always_match,
bool MatchCapabilities(base::DictionaryValue* capabilities);
std::string WebViewIdToWindowHandle(const std::string& web_view_id);
// Initializes a session.
Status ExecuteInitSession(const InitSessionParams& bound_params,
Session* session,
......@@ -57,11 +59,6 @@ Status ExecuteGetSessionCapabilities(Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value);
// Retrieve the handle of the target window.
Status ExecuteGetCurrentWindowHandle(Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value);
// Close the target window.
Status ExecuteClose(Session* session,
const base::DictionaryValue& params,
......
......@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "chrome/test/chromedriver/window_commands.h"
#include "chrome/test/chromedriver/session_commands.h"
#include <stddef.h>
......@@ -1580,3 +1581,12 @@ Status ExecuteTakeHeapSnapshot(Session* session,
Timeout* timeout) {
return web_view->TakeHeapSnapshot(value);
}
Status ExecuteGetCurrentWindowHandle(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout) {
value->reset(new base::Value(WebViewIdToWindowHandle(web_view->GetId())));
return Status(kOk);
}
......@@ -365,4 +365,12 @@ Status ExecutePerformActions(Session* session,
Status ProcessInputActionSequence(Session* session,
const base::DictionaryValue* action_sequence,
std::unique_ptr<base::ListValue>* result);
// Retrieve the handle of the target window.
Status ExecuteGetCurrentWindowHandle(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
#endif // CHROME_TEST_CHROMEDRIVER_WINDOW_COMMANDS_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment