|
3 | 3 | #include "extension_qt/vnc_event_dispatcher.h" |
4 | 4 | #include "webdriver_switches.h" |
5 | 5 | #include "webdriver_server.h" |
| 6 | +#include "webdriver_view_executor.h" |
| 7 | +#include "webdriver_error.h" |
6 | 8 |
|
7 | 9 | #include "q_proxy_parser.h" |
| 10 | +#include "common_util.h" |
| 11 | +#include "base/string_util.h" |
8 | 12 |
|
9 | 13 | namespace webdriver { |
10 | 14 |
|
@@ -33,6 +37,14 @@ Error* QSessionLifeCycleActions::PostInit(const base::DictionaryValue* desired_c |
33 | 37 | session_->logger().Log(kInfoLogLevel, "no proxy settings requsted."); |
34 | 38 | } |
35 | 39 |
|
| 40 | + AddActualQtVersion(); |
| 41 | + if (required_capabilities_dict) |
| 42 | + error = CheckRequiredQtVersion(required_capabilities_dict); |
| 43 | + if (error) { |
| 44 | + session_->logger().Log(kWarningLogLevel, "qt version doesn't match..."); |
| 45 | + return error; |
| 46 | + } |
| 47 | + |
36 | 48 | return error; |
37 | 49 | } |
38 | 50 |
|
@@ -62,4 +74,37 @@ Error* QSessionLifeCycleActions::ParseAndApplyProxySettings(const base::Dictiona |
62 | 74 | return NULL; |
63 | 75 | } |
64 | 76 |
|
| 77 | +bool QSessionLifeCycleActions::AddActualQtVersion() { |
| 78 | + base::DictionaryValue *hybrid; |
| 79 | + session_->capabilities().caps->GetDictionary(Capabilities::kHybrid, &hybrid); |
| 80 | + hybrid->SetString("qtVersion", QCommonUtil::GetQtVersion()); |
| 81 | + |
| 82 | + return true; |
| 83 | +} |
| 84 | + |
| 85 | +Error* QSessionLifeCycleActions::CheckRequiredQtVersion(const base::DictionaryValue *capabilities_dict) { |
| 86 | + const base::DictionaryValue *required_hybrid_caps; |
| 87 | + base::DictionaryValue *actual_hybrid_caps; |
| 88 | + |
| 89 | + if (capabilities_dict->GetDictionary(Capabilities::kHybrid, &required_hybrid_caps)) { |
| 90 | + if (!session_->capabilities().caps->GetDictionary(Capabilities::kHybrid, &actual_hybrid_caps)) { |
| 91 | + return new Error(kUnknownError); |
| 92 | + } |
| 93 | + std::string required_qtVersion; |
| 94 | + std::string actual_qtVersion; |
| 95 | + if (required_hybrid_caps->GetString("qtVersion", &required_qtVersion)) { |
| 96 | + if (!actual_hybrid_caps->GetString("qtVersion", &actual_qtVersion)) { |
| 97 | + return new Error(kUnknownError); |
| 98 | + } |
| 99 | + if (StringToUpperASCII(required_qtVersion).compare("ANY") |
| 100 | + && required_qtVersion.compare("") && required_qtVersion.compare("*")) { |
| 101 | + if(required_qtVersion.at(0) != actual_qtVersion.at(0)) |
| 102 | + return new Error(kUnknownError); |
| 103 | + } |
| 104 | + } |
| 105 | + } |
| 106 | + |
| 107 | + return NULL; |
| 108 | +} |
| 109 | + |
65 | 110 | } // namespace webdriver |
0 commit comments