Skip to content

Commit

Permalink
ChromeDriver Classic supports shared references
Browse files Browse the repository at this point in the history
Element ids returned by ChromeDriver Classic can be used in BiDi and
vice versa.

Bug: chromedriver:4205
Change-Id: I552082846440d17e04deeb94077b4fb7f8225ce8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4127223
Reviewed-by: Thiago Perrotta <tperrotta@chromium.org>
Commit-Queue: Vladimir Nechaev <nechaev@chromium.org>
Reviewed-by: Maksim Sadym <sadym@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1108310}
  • Loading branch information
nechaev-chromium authored and Chromium LUCI CQ committed Feb 22, 2023
1 parent 359614c commit 6158688
Show file tree
Hide file tree
Showing 15 changed files with 1,765 additions and 1,006 deletions.
6 changes: 2 additions & 4 deletions chrome/test/chromedriver/chrome/devtools_client_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@

#include "base/check.h"
#include "base/functional/bind.h"
#include "base/i18n/message_formatter.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "base/logging.h"
#include "base/memory/raw_ptr.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/threading/platform_thread.h"
#include "base/time/time.h"
#include "base/types/optional_util.h"
#include "chrome/test/chromedriver/chrome/devtools_event_listener.h"
Expand All @@ -27,10 +25,8 @@
#include "chrome/test/chromedriver/chrome/status.h"
#include "chrome/test/chromedriver/chrome/util.h"
#include "chrome/test/chromedriver/chrome/web_view_impl.h"
#include "chrome/test/chromedriver/net/command_id.h"
#include "chrome/test/chromedriver/net/sync_websocket.h"
#include "chrome/test/chromedriver/net/timeout.h"
#include "chrome/test/chromedriver/net/url_request_context_getter.h"

namespace {

Expand Down Expand Up @@ -527,7 +523,9 @@ Status DevToolsClientImpl::SetUpDevTools() {
std::string script =
"(function () {"
"window.cdc_adoQpoasnfa76pfcZLmcfl_Array = window.Array;"
"window.cdc_adoQpoasnfa76pfcZLmcfl_Object = window.Object;"
"window.cdc_adoQpoasnfa76pfcZLmcfl_Promise = window.Promise;"
"window.cdc_adoQpoasnfa76pfcZLmcfl_Proxy = window.Proxy;"
"window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol = window.Symbol;"
"}) ();";
params.Set("source", script);
Expand Down
16 changes: 11 additions & 5 deletions chrome/test/chromedriver/chrome/frame_tracker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <utility>

#include "base/json/json_writer.h"
#include "base/logging.h"
#include "chrome/test/chromedriver/chrome/browser_info.h"
#include "chrome/test/chromedriver/chrome/devtools_client.h"
#include "chrome/test/chromedriver/chrome/status.h"
Expand All @@ -20,18 +19,25 @@ FrameTracker::FrameTracker(DevToolsClient* client,
client->AddListener(this);
}

FrameTracker::~FrameTracker() {}
FrameTracker::~FrameTracker() = default;

Status FrameTracker::GetContextIdForFrame(const std::string& frame_id,
std::string* context_id) {
if (frame_to_context_map_.count(frame_id) == 0) {
std::string* context_id) const {
const auto it = frame_to_context_map_.find(frame_id);
if (it == frame_to_context_map_.end()) {
return Status(kNoSuchExecutionContext,
"frame does not have execution context");
}
*context_id = frame_to_context_map_[frame_id];
*context_id = it->second;
return Status(kOk);
}

void FrameTracker::SetContextIdForFrame(std::string frame_id,
std::string context_id) {
frame_to_context_map_.insert_or_assign(std::move(frame_id),
std::move(context_id));
}

WebView* FrameTracker::GetTargetForFrame(const std::string& frame_id) {
// Context in the current target, return current target.
if (frame_to_context_map_.count(frame_id) != 0)
Expand Down
9 changes: 5 additions & 4 deletions chrome/test/chromedriver/chrome/frame_tracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,18 @@ class Status;
// Tracks execution context creation.
class FrameTracker : public DevToolsEventListener {
public:
FrameTracker(DevToolsClient* client,
WebView* web_view = nullptr,
const BrowserInfo* browser_info = nullptr);
explicit FrameTracker(DevToolsClient* client,
WebView* web_view = nullptr,
const BrowserInfo* browser_info = nullptr);

FrameTracker(const FrameTracker&) = delete;
FrameTracker& operator=(const FrameTracker&) = delete;

~FrameTracker() override;

Status GetContextIdForFrame(const std::string& frame_id,
std::string* context_id);
std::string* context_id) const;
void SetContextIdForFrame(std::string frame_id, std::string context_id);
WebView* GetTargetForFrame(const std::string& frame_id);
bool IsKnownFrame(const std::string& frame_id) const;
void DeleteTargetForFrame(const std::string& frame_id);
Expand Down
8 changes: 5 additions & 3 deletions chrome/test/chromedriver/chrome/stub_devtools_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ StubDevToolsClient::StubDevToolsClient() : id_("stub-id") {}

StubDevToolsClient::StubDevToolsClient(const std::string& id) : id_(id) {}

StubDevToolsClient::~StubDevToolsClient() {}
StubDevToolsClient::~StubDevToolsClient() = default;

const std::string& StubDevToolsClient::GetId() {
return id_;
Expand Down Expand Up @@ -119,10 +119,12 @@ Status StubDevToolsClient::HandleReceivedEvents() {

void StubDevToolsClient::SetDetached() {}

void StubDevToolsClient::SetOwner(WebViewImpl* owner) {}
void StubDevToolsClient::SetOwner(WebViewImpl* owner) {
owner_ = owner;
}

WebViewImpl* StubDevToolsClient::GetOwner() const {
return nullptr;
return owner_;
}

DevToolsClient* StubDevToolsClient::GetRootClient() {
Expand Down
1 change: 1 addition & 0 deletions chrome/test/chromedriver/chrome/stub_devtools_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class StubDevToolsClient : public DevToolsClient {
std::string session_id_;
std::string tunnel_session_id_;
std::list<DevToolsEventListener*> listeners_;
base::raw_ptr<WebViewImpl> owner_ = nullptr;
bool is_connected_ = false;
};

Expand Down

0 comments on commit 6158688

Please sign in to comment.