Path: blob/trunk/cpp/iedriver/CommandHandlerRepository.cpp
2867 views
// Licensed to the Software Freedom Conservancy (SFC) under one1// or more contributor license agreements. See the NOTICE file2// distributed with this work for additional information3// regarding copyright ownership. The SFC licenses this file4// to you under the Apache License, Version 2.0 (the "License");5// you may not use this file except in compliance with the License.6// You may obtain a copy of the License at7//8// http://www.apache.org/licenses/LICENSE-2.09//10// Unless required by applicable law or agreed to in writing, software11// distributed under the License is distributed on an "AS IS" BASIS,12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13// See the License for the specific language governing permissions and14// limitations under the License.1516#include "CommandHandlerRepository.h"1718#include "command_types.h"19#include "logging.h"2021#include "CommandHandlers/AcceptAlertCommandHandler.h"22#include "CommandHandlers/ActionsCommandHandler.h"23#include "CommandHandlers/AddCookieCommandHandler.h"24#include "CommandHandlers/ClickElementCommandHandler.h"25#include "CommandHandlers/ClearElementCommandHandler.h"26#include "CommandHandlers/CloseWindowCommandHandler.h"27#include "CommandHandlers/CreateNewWindowCommandHandler.h"28#include "CommandHandlers/DeleteAllCookiesCommandHandler.h"29#include "CommandHandlers/DeleteCookieCommandHandler.h"30#include "CommandHandlers/DismissAlertCommandHandler.h"31#include "CommandHandlers/ElementEqualsCommandHandler.h"32#include "CommandHandlers/ExecuteAsyncScriptCommandHandler.h"33#include "CommandHandlers/ExecuteScriptCommandHandler.h"34#include "CommandHandlers/FindChildElementCommandHandler.h"35#include "CommandHandlers/FindChildElementsCommandHandler.h"36#include "CommandHandlers/FindElementCommandHandler.h"37#include "CommandHandlers/FindElementsCommandHandler.h"38#include "CommandHandlers/FullScreenWindowCommandHandler.h"39#include "CommandHandlers/GetActiveElementCommandHandler.h"40#include "CommandHandlers/GetAlertTextCommandHandler.h"41#include "CommandHandlers/GetAllCookiesCommandHandler.h"42#include "CommandHandlers/GetAllWindowHandlesCommandHandler.h"43#include "CommandHandlers/GetCurrentUrlCommandHandler.h"44#include "CommandHandlers/GetCurrentWindowHandleCommandHandler.h"45#include "CommandHandlers/GetElementAttributeCommandHandler.h"46#include "CommandHandlers/GetElementPropertyCommandHandler.h"47#include "CommandHandlers/GetElementRectCommandHandler.h"48#include "CommandHandlers/GetElementTagNameCommandHandler.h"49#include "CommandHandlers/GetElementTextCommandHandler.h"50#include "CommandHandlers/GetElementValueOfCssPropertyCommandHandler.h"51#include "CommandHandlers/GetNamedCookieCommandHandler.h"52#include "CommandHandlers/GetSessionCapabilitiesCommandHandler.h"53#include "CommandHandlers/GetPageSourceCommandHandler.h"54#include "CommandHandlers/GetTimeoutsCommandHandler.h"55#include "CommandHandlers/GetTitleCommandHandler.h"56#include "CommandHandlers/GetWindowRectCommandHandler.h"57#include "CommandHandlers/GoBackCommandHandler.h"58#include "CommandHandlers/GoForwardCommandHandler.h"59#include "CommandHandlers/GoToUrlCommandHandler.h"60#include "CommandHandlers/IsElementDisplayedCommandHandler.h"61#include "CommandHandlers/IsElementEnabledCommandHandler.h"62#include "CommandHandlers/IsElementSelectedCommandHandler.h"63#include "CommandHandlers/MinimizeWindowCommandHandler.h"64#include "CommandHandlers/MaximizeWindowCommandHandler.h"65#include "CommandHandlers/NewSessionCommandHandler.h"66#include "CommandHandlers/QuitCommandHandler.h"67#include "CommandHandlers/RefreshCommandHandler.h"68#include "CommandHandlers/ReleaseActionsCommandHandler.h"69#include "CommandHandlers/ScreenshotCommandHandler.h"70#include "CommandHandlers/ScreenshotElementCommandHandler.h"71#include "CommandHandlers/SendKeysCommandHandler.h"72#include "CommandHandlers/SendKeysToAlertCommandHandler.h"73#include "CommandHandlers/SetAlertCredentialsCommandHandler.h"74#include "CommandHandlers/SetTimeoutsCommandHandler.h"75#include "CommandHandlers/SetWindowRectCommandHandler.h"76#include "CommandHandlers/SwitchToFrameCommandHandler.h"77#include "CommandHandlers/SwitchToParentFrameCommandHandler.h"78#include "CommandHandlers/SwitchToWindowCommandHandler.h"79#include "IECommandHandler.h"8081namespace webdriver {8283CommandHandlerRepository::CommandHandlerRepository(void) {84this->PopulateCommandHandlers();85}8687CommandHandlerRepository::~CommandHandlerRepository(void) {88}8990bool CommandHandlerRepository::IsValidCommand(const std::string& command_name) {91CommandHandlerMap::const_iterator found_iterator =92this->command_handlers_.find(command_name);9394return found_iterator != this->command_handlers_.end();95}9697CommandHandlerHandle CommandHandlerRepository::GetCommandHandler(const std::string& command_name) {98CommandHandlerMap::const_iterator found_iterator =99this->command_handlers_.find(command_name);100101if (found_iterator == this->command_handlers_.end()) {102return NULL;103}104105return found_iterator->second;106}107108void CommandHandlerRepository::PopulateCommandHandlers() {109LOG(TRACE) << "Entering CommandHandlerRepository::PopulateCommandHandlers";110111this->command_handlers_[webdriver::CommandType::NoCommand] = CommandHandlerHandle(new IECommandHandler);112this->command_handlers_[webdriver::CommandType::NewSession] = CommandHandlerHandle(new NewSessionCommandHandler);113this->command_handlers_[webdriver::CommandType::Quit] = CommandHandlerHandle(new QuitCommandHandler);114this->command_handlers_[webdriver::CommandType::GetTimeouts] = CommandHandlerHandle(new GetTimeoutsCommandHandler);115this->command_handlers_[webdriver::CommandType::SetTimeouts] = CommandHandlerHandle(new SetTimeoutsCommandHandler);116this->command_handlers_[webdriver::CommandType::Get] = CommandHandlerHandle(new GoToUrlCommandHandler);117this->command_handlers_[webdriver::CommandType::GetCurrentUrl] = CommandHandlerHandle(new GetCurrentUrlCommandHandler);118this->command_handlers_[webdriver::CommandType::GoBack] = CommandHandlerHandle(new GoBackCommandHandler);119this->command_handlers_[webdriver::CommandType::GoForward] = CommandHandlerHandle(new GoForwardCommandHandler);120this->command_handlers_[webdriver::CommandType::Refresh] = CommandHandlerHandle(new RefreshCommandHandler);121this->command_handlers_[webdriver::CommandType::GetTitle] = CommandHandlerHandle(new GetTitleCommandHandler);122this->command_handlers_[webdriver::CommandType::GetCurrentWindowHandle] = CommandHandlerHandle(new GetCurrentWindowHandleCommandHandler);123this->command_handlers_[webdriver::CommandType::CloseWindow] = CommandHandlerHandle(new CloseWindowCommandHandler);124this->command_handlers_[webdriver::CommandType::SwitchToWindow] = CommandHandlerHandle(new SwitchToWindowCommandHandler);125this->command_handlers_[webdriver::CommandType::GetWindowHandles] = CommandHandlerHandle(new GetAllWindowHandlesCommandHandler);126this->command_handlers_[webdriver::CommandType::NewWindow] = CommandHandlerHandle(new CreateNewWindowCommandHandler);127this->command_handlers_[webdriver::CommandType::SwitchToFrame] = CommandHandlerHandle(new SwitchToFrameCommandHandler);128this->command_handlers_[webdriver::CommandType::SwitchToParentFrame] = CommandHandlerHandle(new SwitchToParentFrameCommandHandler);129this->command_handlers_[webdriver::CommandType::GetWindowRect] = CommandHandlerHandle(new GetWindowRectCommandHandler);130this->command_handlers_[webdriver::CommandType::SetWindowRect] = CommandHandlerHandle(new SetWindowRectCommandHandler);131this->command_handlers_[webdriver::CommandType::MaximizeWindow] = CommandHandlerHandle(new MaximizeWindowCommandHandler);132this->command_handlers_[webdriver::CommandType::MinimizeWindow] = CommandHandlerHandle(new MinimizeWindowCommandHandler);133this->command_handlers_[webdriver::CommandType::FullscreenWindow] = CommandHandlerHandle(new FullScreenWindowCommandHandler);134this->command_handlers_[webdriver::CommandType::GetActiveElement] = CommandHandlerHandle(new GetActiveElementCommandHandler);135this->command_handlers_[webdriver::CommandType::FindElement] = CommandHandlerHandle(new FindElementCommandHandler);136this->command_handlers_[webdriver::CommandType::FindElements] = CommandHandlerHandle(new FindElementsCommandHandler);137this->command_handlers_[webdriver::CommandType::FindChildElement] = CommandHandlerHandle(new FindChildElementCommandHandler);138this->command_handlers_[webdriver::CommandType::FindChildElements] = CommandHandlerHandle(new FindChildElementsCommandHandler);139this->command_handlers_[webdriver::CommandType::IsElementSelected] = CommandHandlerHandle(new IsElementSelectedCommandHandler);140this->command_handlers_[webdriver::CommandType::GetElementAttribute] = CommandHandlerHandle(new GetElementAttributeCommandHandler);141this->command_handlers_[webdriver::CommandType::GetElementProperty] = CommandHandlerHandle(new GetElementPropertyCommandHandler);142this->command_handlers_[webdriver::CommandType::GetElementValueOfCssProperty] = CommandHandlerHandle(new GetElementValueOfCssPropertyCommandHandler);143this->command_handlers_[webdriver::CommandType::GetElementText] = CommandHandlerHandle(new GetElementTextCommandHandler);144this->command_handlers_[webdriver::CommandType::GetElementTagName] = CommandHandlerHandle(new GetElementTagNameCommandHandler);145this->command_handlers_[webdriver::CommandType::GetElementRect] = CommandHandlerHandle(new GetElementRectCommandHandler);146this->command_handlers_[webdriver::CommandType::IsElementEnabled] = CommandHandlerHandle(new IsElementEnabledCommandHandler);147this->command_handlers_[webdriver::CommandType::ClickElement] = CommandHandlerHandle(new ClickElementCommandHandler);148this->command_handlers_[webdriver::CommandType::ClearElement] = CommandHandlerHandle(new ClearElementCommandHandler);149this->command_handlers_[webdriver::CommandType::SendKeysToElement] = CommandHandlerHandle(new SendKeysCommandHandler);150this->command_handlers_[webdriver::CommandType::GetPageSource] = CommandHandlerHandle(new GetPageSourceCommandHandler);151this->command_handlers_[webdriver::CommandType::ExecuteScript] = CommandHandlerHandle(new ExecuteScriptCommandHandler);152this->command_handlers_[webdriver::CommandType::ExecuteAsyncScript] = CommandHandlerHandle(new ExecuteAsyncScriptCommandHandler);153this->command_handlers_[webdriver::CommandType::GetAllCookies] = CommandHandlerHandle(new GetAllCookiesCommandHandler);154this->command_handlers_[webdriver::CommandType::GetNamedCookie] = CommandHandlerHandle(new GetNamedCookieCommandHandler);155this->command_handlers_[webdriver::CommandType::AddCookie] = CommandHandlerHandle(new AddCookieCommandHandler);156this->command_handlers_[webdriver::CommandType::DeleteNamedCookie] = CommandHandlerHandle(new DeleteCookieCommandHandler);157this->command_handlers_[webdriver::CommandType::DeleteAllCookies] = CommandHandlerHandle(new DeleteAllCookiesCommandHandler);158this->command_handlers_[webdriver::CommandType::Actions] = CommandHandlerHandle(new ActionsCommandHandler);159this->command_handlers_[webdriver::CommandType::ReleaseActions] = CommandHandlerHandle(new ReleaseActionsCommandHandler);160this->command_handlers_[webdriver::CommandType::DismissAlert] = CommandHandlerHandle(new DismissAlertCommandHandler);161this->command_handlers_[webdriver::CommandType::AcceptAlert] = CommandHandlerHandle(new AcceptAlertCommandHandler);162this->command_handlers_[webdriver::CommandType::GetAlertText] = CommandHandlerHandle(new GetAlertTextCommandHandler);163this->command_handlers_[webdriver::CommandType::SendKeysToAlert] = CommandHandlerHandle(new SendKeysToAlertCommandHandler);164this->command_handlers_[webdriver::CommandType::Screenshot] = CommandHandlerHandle(new ScreenshotCommandHandler);165this->command_handlers_[webdriver::CommandType::ElementScreenshot] = CommandHandlerHandle(new ScreenshotElementCommandHandler);166167// Additional commands required to be supported, but not defined168// in the specification.169this->command_handlers_[webdriver::CommandType::SetAlertCredentials] = CommandHandlerHandle(new SetAlertCredentialsCommandHandler);170this->command_handlers_[webdriver::CommandType::IsElementDisplayed] = CommandHandlerHandle(new IsElementDisplayedCommandHandler);171this->command_handlers_[webdriver::CommandType::ElementEquals] = CommandHandlerHandle(new ElementEqualsCommandHandler);172this->command_handlers_[webdriver::CommandType::GetSessionCapabilities] = CommandHandlerHandle(new GetSessionCapabilitiesCommandHandler);173174// Commands intercepted by the server before reaching the command executor175this->command_handlers_[webdriver::CommandType::Status] = CommandHandlerHandle(new IECommandHandler);176this->command_handlers_[webdriver::CommandType::GetSessionList] = CommandHandlerHandle(new IECommandHandler);177}178179} // namespace webdriver180181182