Skip to content

Commit d95ff4b

Browse files
committed
added hybrid capabilities supported view types
1 parent f1ca2c5 commit d95ff4b

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

inc/webdriver_capabilities_parser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ struct Capabilities {
6161
static const char kLoadAsync[];
6262
static const char kBrowserStartWindow[];
6363
static const char kBrowserClass[];
64+
static const char kHybrid[];
6465
/// desired size, as a string (e.g. - "600, 600") for start window
6566
static const char kWindowSize[];
6667
/// desired position, as a string (e.g. - "80, 60") for start window

inc/webdriver_session.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ session's create or session's terminate.
5252
#include "base/scoped_temp_dir.h"
5353
#include "base/string16.h"
5454
#include "base/threading/thread.h"
55+
#include "base/values.h"
5556
#include "frame_path.h"
5657
#include "webdriver_basic_types.h"
5758
#include "webdriver_view_id.h"
@@ -217,6 +218,7 @@ class Session {
217218
bool CheckRequiredCapabilities(const base::DictionaryValue* capabilities_dict);
218219
bool CheckRequiredBrowser(const base::DictionaryValue* capabilities_dict);
219220
bool CheckRequiredPlatform(const base::DictionaryValue* capabilities_dict);
221+
bool CheckRequiredViewType(const base::DictionaryValue* capabilities_dict);
220222
bool CheckRequiredCapabilityBoolean(const base::DictionaryValue* capabilities_dict, const std::string& cap_name);
221223

222224
void RunClosureOnSessionThread(

inc/webdriver_view_executor.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,15 @@ class ViewCmdExecutorFactory
241241
/// @param creator pointer to custom creator. No need to delete object
242242
void AddViewCmdExecutorCreator(ViewCmdExecutorCreator* creator);
243243

244+
typedef std::vector<std::string> SupportedViewTypesList;
245+
/// @return pointer to vector supported view types
246+
const SupportedViewTypesList& getSupportedViewTypesList() const;
247+
244248
private:
245249
typedef ViewCmdExecutorCreator* ViewCmdExecutorCreatorPtr;
246250
typedef std::vector<ViewCmdExecutorCreatorPtr> CreatorsList;
247251
CreatorsList creators_;
252+
SupportedViewTypesList typeslist_;
248253

249254
ViewCmdExecutorFactory();
250255
~ViewCmdExecutorFactory(){}

src/webdriver/webdriver_capabilities_parser.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ const char Capabilities::kBrowserClass[] = "browserClass";
4242
const char Capabilities::kWindowSize[] = "windowsize";
4343
const char Capabilities::kWindowPosition[] = "windowposition";
4444
const char Capabilities::kMaximize[] = "maximize";
45+
const char Capabilities::kHybrid[] = "hybrid";
4546

4647
namespace {
4748

src/webdriver/webdriver_session.cc

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "webdriver_session_manager.h"
3030
#include "webdriver_view_runner.h"
3131
#include "webdriver_util.h"
32+
#include "webdriver_view_executor.h"
3233

3334
#if !defined(OS_WIN)
3435
#include <sys/types.h>
@@ -85,6 +86,14 @@ bool Session::InitActualCapabilities() {
8586
capabilities_.caps->SetBoolean(Capabilities::kAcceptSslCerts, false);
8687
capabilities_.caps->SetBoolean(Capabilities::kNativeEvents, true);
8788

89+
ViewCmdExecutorFactory* executorFactory = ViewCmdExecutorFactory::GetInstance();
90+
const ViewCmdExecutorFactory::SupportedViewTypesList typesList = executorFactory->getSupportedViewTypesList();
91+
base::DictionaryValue *hybrid = new base::DictionaryValue;
92+
ViewCmdExecutorFactory::SupportedViewTypesList::const_iterator iter = typesList.begin();
93+
for (; iter != typesList.end(); iter++) {
94+
hybrid->SetBoolean(*iter, true);
95+
}
96+
capabilities_.caps->Set(Capabilities::kHybrid, hybrid);
8897
return true;
8998
}
9099

@@ -95,6 +104,9 @@ bool Session::CheckRequiredCapabilities(const base::DictionaryValue* capabilitie
95104
if (!CheckRequiredBrowser(capabilities_dict))
96105
return false;
97106

107+
if(!CheckRequiredViewType(capabilities_dict))
108+
return false;
109+
98110
if (!CheckRequiredCapabilityBoolean(capabilities_dict, Capabilities::kJavascriptEnabled))
99111
return false;
100112

@@ -168,6 +180,35 @@ bool Session::CheckRequiredPlatform(const base::DictionaryValue* capabilities_di
168180
return true;
169181
}
170182

183+
bool Session::CheckRequiredViewType(const base::DictionaryValue *capabilities_dict) {
184+
185+
const base::DictionaryValue *required_hybrid_caps;
186+
base::DictionaryValue *actual_hybrid_caps;
187+
188+
if (capabilities_dict->GetDictionary(Capabilities::kHybrid, &required_hybrid_caps)) {
189+
if (!capabilities_.caps->GetDictionary(Capabilities::kHybrid, &actual_hybrid_caps)) {
190+
return false;
191+
}
192+
base::DictionaryValue::key_iterator key_iter = required_hybrid_caps->begin_keys();
193+
for (; key_iter != required_hybrid_caps->end_keys(); ++key_iter) {
194+
bool actual_value;
195+
bool required_value;
196+
if (required_hybrid_caps->GetBoolean(*key_iter, &required_value)) {
197+
if (!actual_hybrid_caps->GetBoolean(*key_iter, &actual_value)) {
198+
logger_.Log(kWarningLogLevel, "check failed - view type doesn't set as bool..");
199+
return false;
200+
}
201+
if (required_value != actual_value) {
202+
logger_.Log(kWarningLogLevel, "check failed - view type doesn't match...");
203+
return false;
204+
}
205+
}
206+
}
207+
}
208+
209+
return true;
210+
}
211+
171212
bool Session::CheckRequiredCapabilityBoolean(const base::DictionaryValue* capabilities_dict, const std::string& cap_name) {
172213
bool actual_value;
173214
bool required_value;

src/webdriver/webdriver_view_executor.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include "webdriver_view_executor.h"
22

33
#include "webdriver_session.h"
4-
54
namespace webdriver {
65

76
ViewCmdExecutor::ViewCmdExecutor(Session* session, ViewId viewId)
@@ -26,9 +25,14 @@ ViewCmdExecutorFactory* ViewCmdExecutorFactory::GetInstance() {
2625
void ViewCmdExecutorFactory::AddViewCmdExecutorCreator(ViewCmdExecutorCreator* creator) {
2726
if (NULL != creator) {
2827
creators_.push_back(creator);
28+
typeslist_.push_back(creator->GetViewTypeName());
2929
}
3030
}
3131

32+
const ViewCmdExecutorFactory::SupportedViewTypesList& ViewCmdExecutorFactory::getSupportedViewTypesList() const {
33+
return typeslist_;
34+
}
35+
3236
ViewCmdExecutor* ViewCmdExecutorFactory::CreateExecutor(Session* session) const {
3337
return CreateExecutor(session, session->current_view());
3438
}

0 commit comments

Comments
 (0)