@@ -120,7 +120,7 @@ CommandCreatorPtr RouteTable::GetRouteForURL(const std::string& url, std::string
120120bool RouteTable::AddRoute (const std::string& uri_pattern,
121121 const CommandCreatorPtr& creator) {
122122 // custom command check
123- if (false ){ // !CommandRoutes::IsStandardRoute(uri_pattern)) {
123+ if (!CommandRoutes::IsStandardRoute (uri_pattern)) {
124124 std::vector<std::string> url_segments;
125125 base::SplitString (uri_pattern, ' /' , &url_segments);
126126
@@ -129,17 +129,16 @@ bool RouteTable::AddRoute(const std::string& uri_pattern,
129129 GlobalLogger::Log (kWarningLogLevel , " Custom commands too short" );
130130 return false ;
131131 }
132- if (url_segments.size () >= 2
133- && url_segments[0 ].empty () && url_segments[1 ] != " session" ) {
134- if (!CheckCustomPrefix (url_segments[1 ]))
135- return false ;
136- } else if (url_segments.size () < 4 || !url_segments[0 ].empty ()
137- || url_segments[1 ] != " session" || url_segments[2 ] != " *" ) {
138- GlobalLogger::Log (kWarningLogLevel , " Invalid custom commands" );
132+ bool hasCustomPrefix = false ;
133+ for (size_t i = 0 ; i < url_segments.size (); ++i)
134+ {
135+ hasCustomPrefix = CheckCustomPrefix (url_segments[i]);
136+ if (hasCustomPrefix)
137+ break ;
138+ }
139+ if (!hasCustomPrefix) {
140+ GlobalLogger::Log (kWarningLogLevel , " Comand " + uri_pattern +" has no valid custom prefix" );
139141 return false ;
140- } else {
141- if (!CheckCustomPrefix (url_segments[3 ]))
142- return false ;
143142 }
144143 }
145144 std::vector<webdriver::internal::RouteDetails>::iterator route;
@@ -175,8 +174,6 @@ bool RouteTable::CheckCustomPrefix(const std::string& prefix) {
175174 if (prefix_segments.size () < 3 || !prefix_segments[0 ].empty () || prefix_segments[2 ].empty ()
176175 || prefix_segments[1 ].empty () || !std::isalpha (prefix_segments[1 ].at (0 ))) {
177176#endif // OS_WIN
178-
179- GlobalLogger::Log (kWarningLogLevel , " Custom prefix invalid" );
180177 return false ;
181178 }
182179 return true ;
0 commit comments