X-Git-Url: https://git.webkit.org/?p=WebKit-https.git;a=blobdiff_plain;f=Source%2FWebDriver%2FSession.cpp;h=fdd24dfbbed63422a7c5955d94786efbb1c387ad;hp=35ced0e6377d67051770d18093803d013ceaa6d4;hb=b99ee319c833e72c996ff2f56b3efdef68fdf19c;hpb=d43c61cb152d305cc60c696a11c189145c189430 diff --git a/Source/WebDriver/Session.cpp b/Source/WebDriver/Session.cpp index 35ced0e6377d..fdd24dfbbed6 100644 --- a/Source/WebDriver/Session.cpp +++ b/Source/WebDriver/Session.cpp @@ -71,7 +71,7 @@ void Session::close(Function&& completionHandler) completionHandler(CommandResult::fail(WTFMove(response.responseObject))); return; } - m_toplevelBrowsingContext = std::nullopt; + switchToTopLevelBrowsingContext(std::nullopt); completionHandler(CommandResult::success()); }); } @@ -87,6 +87,21 @@ void Session::setTimeouts(const Timeouts& timeouts, Function toplevelBrowsingContext) +{ + m_toplevelBrowsingContext = toplevelBrowsingContext; + m_browsingContext = std::nullopt; +} + +void Session::switchToBrowsingContext(std::optional browsingContext) +{ + // Automation sends empty strings for main frame. + if (!browsingContext || browsingContext.value().isEmpty()) + m_browsingContext = std::nullopt; + else + m_browsingContext = browsingContext; +} + void Session::createTopLevelBrowsingContext(Function&& completionHandler) { ASSERT(!m_toplevelBrowsingContext.value()); @@ -101,7 +116,7 @@ void Session::createTopLevelBrowsingContext(Function&& c completionHandler(CommandResult::fail(CommandResult::ErrorCode::UnknownError)); return; } - m_toplevelBrowsingContext = handle; + switchToTopLevelBrowsingContext(handle); completionHandler(CommandResult::success()); }); }); @@ -122,7 +137,7 @@ void Session::go(const String& url, Function&& completio completionHandler(CommandResult::fail(WTFMove(response.responseObject))); return; } - m_browsingContext = std::nullopt; + switchToBrowsingContext(std::nullopt); completionHandler(CommandResult::success()); }); } @@ -169,7 +184,7 @@ void Session::back(Function&& completionHandler) completionHandler(CommandResult::fail(WTFMove(response.responseObject))); return; } - m_browsingContext = std::nullopt; + switchToBrowsingContext(std::nullopt); completionHandler(CommandResult::success()); }); } @@ -188,7 +203,7 @@ void Session::forward(Function&& completionHandler) completionHandler(CommandResult::fail(WTFMove(response.responseObject))); return; } - m_browsingContext = std::nullopt; + switchToBrowsingContext(std::nullopt); completionHandler(CommandResult::success()); }); } @@ -207,7 +222,7 @@ void Session::refresh(Function&& completionHandler) completionHandler(CommandResult::fail(WTFMove(response.responseObject))); return; } - m_browsingContext = std::nullopt; + switchToBrowsingContext(std::nullopt); completionHandler(CommandResult::success()); }); } @@ -289,7 +304,7 @@ void Session::switchToWindow(const String& windowHandle, Function&& frameID, FunctionisNull()) { - m_browsingContext = std::nullopt; + switchToBrowsingContext(std::nullopt); completionHandler(CommandResult::success()); return; } @@ -381,7 +396,7 @@ void Session::switchToFrame(RefPtr&& frameID, Function&& completionH completionHandler(CommandResult::fail(CommandResult::ErrorCode::UnknownError)); return; } - m_browsingContext = frameHandle; + switchToBrowsingContext(frameHandle); completionHandler(CommandResult::success()); }); }