2017-02-14 09:48:56 -08:00
|
|
|
// Licensed to the Software Freedom Conservancy (SFC) under one
|
|
|
|
|
// or more contributor license agreements. See the NOTICE file
|
|
|
|
|
// distributed with this work for additional information
|
|
|
|
|
// regarding copyright ownership. The SFC licenses this file
|
|
|
|
|
// to you under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
|
// You may obtain a copy of the License at
|
|
|
|
|
//
|
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
//
|
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
|
|
#include "CommandHandlerRepository.h"
|
|
|
|
|
|
|
|
|
|
#include "command_types.h"
|
|
|
|
|
#include "logging.h"
|
|
|
|
|
|
|
|
|
|
#include "CommandHandlers/AcceptAlertCommandHandler.h"
|
2017-02-22 14:13:25 -08:00
|
|
|
#include "CommandHandlers/ActionsCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/AddCookieCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/ClickElementCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/ClearElementCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/CloseWindowCommandHandler.h"
|
2019-01-24 07:34:36 -08:00
|
|
|
#include "CommandHandlers/CreateNewWindowCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/DeleteAllCookiesCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/DeleteCookieCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/DismissAlertCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/ElementEqualsCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/ExecuteAsyncScriptCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/ExecuteScriptCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/FindChildElementCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/FindChildElementsCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/FindElementCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/FindElementsCommandHandler.h"
|
2017-08-31 09:41:44 -07:00
|
|
|
#include "CommandHandlers/FullScreenWindowCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/GetActiveElementCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetAlertTextCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetAllCookiesCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetAllWindowHandlesCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetCurrentUrlCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetCurrentWindowHandleCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetElementAttributeCommandHandler.h"
|
2017-08-31 09:41:44 -07:00
|
|
|
#include "CommandHandlers/GetElementPropertyCommandHandler.h"
|
2017-02-22 14:13:25 -08:00
|
|
|
#include "CommandHandlers/GetElementRectCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/GetElementTagNameCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetElementTextCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetElementValueOfCssPropertyCommandHandler.h"
|
2017-08-31 09:41:44 -07:00
|
|
|
#include "CommandHandlers/GetNamedCookieCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/GetSessionCapabilitiesCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GetPageSourceCommandHandler.h"
|
2017-02-22 14:13:25 -08:00
|
|
|
#include "CommandHandlers/GetTimeoutsCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/GetTitleCommandHandler.h"
|
2017-02-22 14:13:25 -08:00
|
|
|
#include "CommandHandlers/GetWindowRectCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/GoBackCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GoForwardCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/GoToUrlCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/IsElementDisplayedCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/IsElementEnabledCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/IsElementSelectedCommandHandler.h"
|
2017-08-31 09:41:44 -07:00
|
|
|
#include "CommandHandlers/MinimizeWindowCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/MaximizeWindowCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/NewSessionCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/QuitCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/RefreshCommandHandler.h"
|
2017-02-22 14:13:25 -08:00
|
|
|
#include "CommandHandlers/ReleaseActionsCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/ScreenshotCommandHandler.h"
|
2018-04-03 14:48:51 -07:00
|
|
|
#include "CommandHandlers/ScreenshotElementCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/SendKeysCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/SendKeysToAlertCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/SetAlertCredentialsCommandHandler.h"
|
2017-02-22 14:13:25 -08:00
|
|
|
#include "CommandHandlers/SetTimeoutsCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/SetWindowRectCommandHandler.h"
|
2017-02-14 09:48:56 -08:00
|
|
|
#include "CommandHandlers/SwitchToFrameCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/SwitchToParentFrameCommandHandler.h"
|
|
|
|
|
#include "CommandHandlers/SwitchToWindowCommandHandler.h"
|
|
|
|
|
#include "IECommandHandler.h"
|
|
|
|
|
|
|
|
|
|
namespace webdriver {
|
|
|
|
|
|
|
|
|
|
CommandHandlerRepository::CommandHandlerRepository(void) {
|
|
|
|
|
this->PopulateCommandHandlers();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CommandHandlerRepository::~CommandHandlerRepository(void) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CommandHandlerRepository::IsValidCommand(const std::string& command_name) {
|
|
|
|
|
CommandHandlerMap::const_iterator found_iterator =
|
|
|
|
|
this->command_handlers_.find(command_name);
|
|
|
|
|
|
|
|
|
|
return found_iterator != this->command_handlers_.end();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CommandHandlerHandle CommandHandlerRepository::GetCommandHandler(const std::string& command_name) {
|
|
|
|
|
CommandHandlerMap::const_iterator found_iterator =
|
|
|
|
|
this->command_handlers_.find(command_name);
|
|
|
|
|
|
|
|
|
|
if (found_iterator == this->command_handlers_.end()) {
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return found_iterator->second;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CommandHandlerRepository::PopulateCommandHandlers() {
|
|
|
|
|
LOG(TRACE) << "Entering CommandHandlerRepository::PopulateCommandHandlers";
|
|
|
|
|
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::NoCommand] = CommandHandlerHandle(new IECommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::NewSession] = CommandHandlerHandle(new NewSessionCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::Quit] = CommandHandlerHandle(new QuitCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetTimeouts] = CommandHandlerHandle(new GetTimeoutsCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::SetTimeouts] = CommandHandlerHandle(new SetTimeoutsCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::Get] = CommandHandlerHandle(new GoToUrlCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetCurrentUrl] = CommandHandlerHandle(new GetCurrentUrlCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GoBack] = CommandHandlerHandle(new GoBackCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GoForward] = CommandHandlerHandle(new GoForwardCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::Refresh] = CommandHandlerHandle(new RefreshCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetTitle] = CommandHandlerHandle(new GetTitleCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetCurrentWindowHandle] = CommandHandlerHandle(new GetCurrentWindowHandleCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::CloseWindow] = CommandHandlerHandle(new CloseWindowCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::SwitchToWindow] = CommandHandlerHandle(new SwitchToWindowCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetWindowHandles] = CommandHandlerHandle(new GetAllWindowHandlesCommandHandler);
|
2019-01-24 07:34:36 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::NewWindow] = CommandHandlerHandle(new CreateNewWindowCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::SwitchToFrame] = CommandHandlerHandle(new SwitchToFrameCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::SwitchToParentFrame] = CommandHandlerHandle(new SwitchToParentFrameCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetWindowRect] = CommandHandlerHandle(new GetWindowRectCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::SetWindowRect] = CommandHandlerHandle(new SetWindowRectCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::MaximizeWindow] = CommandHandlerHandle(new MaximizeWindowCommandHandler);
|
2017-08-31 09:41:44 -07:00
|
|
|
this->command_handlers_[webdriver::CommandType::MinimizeWindow] = CommandHandlerHandle(new MinimizeWindowCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::FullscreenWindow] = CommandHandlerHandle(new FullScreenWindowCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetActiveElement] = CommandHandlerHandle(new GetActiveElementCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::FindElement] = CommandHandlerHandle(new FindElementCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::FindElements] = CommandHandlerHandle(new FindElementsCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::FindChildElement] = CommandHandlerHandle(new FindChildElementCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::FindChildElements] = CommandHandlerHandle(new FindChildElementsCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::IsElementSelected] = CommandHandlerHandle(new IsElementSelectedCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetElementAttribute] = CommandHandlerHandle(new GetElementAttributeCommandHandler);
|
2017-08-31 09:41:44 -07:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetElementProperty] = CommandHandlerHandle(new GetElementPropertyCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetElementValueOfCssProperty] = CommandHandlerHandle(new GetElementValueOfCssPropertyCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetElementText] = CommandHandlerHandle(new GetElementTextCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetElementTagName] = CommandHandlerHandle(new GetElementTagNameCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetElementRect] = CommandHandlerHandle(new GetElementRectCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::IsElementEnabled] = CommandHandlerHandle(new IsElementEnabledCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::ClickElement] = CommandHandlerHandle(new ClickElementCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::ClearElement] = CommandHandlerHandle(new ClearElementCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::SendKeysToElement] = CommandHandlerHandle(new SendKeysCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetPageSource] = CommandHandlerHandle(new GetPageSourceCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::ExecuteScript] = CommandHandlerHandle(new ExecuteScriptCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::ExecuteAsyncScript] = CommandHandlerHandle(new ExecuteAsyncScriptCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetAllCookies] = CommandHandlerHandle(new GetAllCookiesCommandHandler);
|
2017-08-31 09:41:44 -07:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetNamedCookie] = CommandHandlerHandle(new GetNamedCookieCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::AddCookie] = CommandHandlerHandle(new AddCookieCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::DeleteNamedCookie] = CommandHandlerHandle(new DeleteCookieCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::DeleteAllCookies] = CommandHandlerHandle(new DeleteAllCookiesCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::Actions] = CommandHandlerHandle(new ActionsCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::ReleaseActions] = CommandHandlerHandle(new ReleaseActionsCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::DismissAlert] = CommandHandlerHandle(new DismissAlertCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::AcceptAlert] = CommandHandlerHandle(new AcceptAlertCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::GetAlertText] = CommandHandlerHandle(new GetAlertTextCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::SendKeysToAlert] = CommandHandlerHandle(new SendKeysToAlertCommandHandler);
|
2017-02-22 14:13:25 -08:00
|
|
|
this->command_handlers_[webdriver::CommandType::Screenshot] = CommandHandlerHandle(new ScreenshotCommandHandler);
|
2018-04-03 14:48:51 -07:00
|
|
|
this->command_handlers_[webdriver::CommandType::ElementScreenshot] = CommandHandlerHandle(new ScreenshotElementCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
|
2017-02-22 14:13:25 -08:00
|
|
|
// Additional commands required to be supported, but not defined
|
|
|
|
|
// in the specification.
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::SetAlertCredentials] = CommandHandlerHandle(new SetAlertCredentialsCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::IsElementDisplayed] = CommandHandlerHandle(new IsElementDisplayedCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::ElementEquals] = CommandHandlerHandle(new ElementEqualsCommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetSessionCapabilities] = CommandHandlerHandle(new GetSessionCapabilitiesCommandHandler);
|
2017-02-14 09:48:56 -08:00
|
|
|
|
|
|
|
|
// Commands intercepted by the server before reaching the command executor
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::Status] = CommandHandlerHandle(new IECommandHandler);
|
|
|
|
|
this->command_handlers_[webdriver::CommandType::GetSessionList] = CommandHandlerHandle(new IECommandHandler);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace webdriver
|