OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <signal.h> | 5 #include <signal.h> |
6 #include <stdlib.h> | 6 #include <stdlib.h> |
7 #ifndef _WIN32 | 7 #ifndef _WIN32 |
8 #include <sys/time.h> | 8 #include <sys/time.h> |
9 #include <sys/types.h> | 9 #include <sys/types.h> |
10 #include <sys/wait.h> | 10 #include <sys/wait.h> |
11 #else | 11 #else |
12 #include <time.h> | 12 #include <time.h> |
13 #endif | 13 #endif |
14 #include <iostream> | 14 #include <iostream> |
15 #include <fstream> | 15 #include <fstream> |
16 | 16 |
17 #include "base/at_exit.h" | 17 #include "base/at_exit.h" |
18 #include "base/command_line.h" | 18 #include "base/command_line.h" |
19 #include "base/logging.h" | 19 #include "base/logging.h" |
20 #include "base/scoped_ptr.h" | 20 #include "base/scoped_ptr.h" |
21 #include "base/string_util.h" | 21 #include "base/string_util.h" |
22 #include "base/utf_string_conversions.h" | 22 #include "base/utf_string_conversions.h" |
23 | 23 |
24 #include "chrome/test/webdriver/dispatch.h" | 24 #include "chrome/test/webdriver/dispatch.h" |
25 #include "chrome/test/webdriver/session_manager.h" | 25 #include "chrome/test/webdriver/session_manager.h" |
26 #include "chrome/test/webdriver/utility_functions.h" | 26 #include "chrome/test/webdriver/utility_functions.h" |
27 #include "chrome/test/webdriver/commands/create_session.h" | 27 #include "chrome/test/webdriver/commands/create_session.h" |
28 #include "chrome/test/webdriver/commands/execute_command.h" | 28 #include "chrome/test/webdriver/commands/execute_command.h" |
| 29 #include "chrome/test/webdriver/commands/find_element_commands.h" |
| 30 #include "chrome/test/webdriver/commands/implicit_wait_command.h" |
29 #include "chrome/test/webdriver/commands/navigate_commands.h" | 31 #include "chrome/test/webdriver/commands/navigate_commands.h" |
30 #include "chrome/test/webdriver/commands/session_with_id.h" | 32 #include "chrome/test/webdriver/commands/session_with_id.h" |
31 #include "chrome/test/webdriver/commands/source_command.h" | 33 #include "chrome/test/webdriver/commands/source_command.h" |
32 #include "chrome/test/webdriver/commands/speed_command.h" | 34 #include "chrome/test/webdriver/commands/speed_command.h" |
33 #include "chrome/test/webdriver/commands/title_command.h" | 35 #include "chrome/test/webdriver/commands/title_command.h" |
34 #include "chrome/test/webdriver/commands/url_command.h" | 36 #include "chrome/test/webdriver/commands/url_command.h" |
35 | 37 |
36 #include "third_party/mongoose/mongoose.h" | 38 #include "third_party/mongoose/mongoose.h" |
37 | 39 |
38 // Make sure we have ho zombies from CGIs. | 40 // Make sure we have ho zombies from CGIs. |
(...skipping 22 matching lines...) Expand all Loading... |
61 SetCallback<CreateSession>(ctx, "/session"); | 63 SetCallback<CreateSession>(ctx, "/session"); |
62 SetCallback<BackCommand>(ctx, "/session/*/back"); | 64 SetCallback<BackCommand>(ctx, "/session/*/back"); |
63 SetCallback<ExecuteCommand>(ctx, "/session/*/execute"); | 65 SetCallback<ExecuteCommand>(ctx, "/session/*/execute"); |
64 SetCallback<ForwardCommand>(ctx, "/session/*/forward"); | 66 SetCallback<ForwardCommand>(ctx, "/session/*/forward"); |
65 SetCallback<RefreshCommand>(ctx, "/session/*/refresh"); | 67 SetCallback<RefreshCommand>(ctx, "/session/*/refresh"); |
66 SetCallback<SourceCommand>(ctx, "/session/*/source"); | 68 SetCallback<SourceCommand>(ctx, "/session/*/source"); |
67 SetCallback<TitleCommand>(ctx, "/session/*/title"); | 69 SetCallback<TitleCommand>(ctx, "/session/*/title"); |
68 SetCallback<URLCommand>(ctx, "/session/*/url"); | 70 SetCallback<URLCommand>(ctx, "/session/*/url"); |
69 SetCallback<SpeedCommand>(ctx, "/session/*/speed"); | 71 SetCallback<SpeedCommand>(ctx, "/session/*/speed"); |
70 | 72 |
| 73 // WebElement commands |
| 74 SetCallback<ImplicitWaitCommand>(ctx, "/session/*/timeouts/implicit_wait"); |
| 75 SetCallback<FindOneElementCommand>(ctx, "/session/*/element"); |
| 76 SetCallback<FindManyElementsCommand>(ctx, "/session/*/elements"); |
| 77 SetCallback<FindOneElementCommand>(ctx, "/session/*/element/*/element"); |
| 78 SetCallback<FindManyElementsCommand>(ctx, "/session/*/elements/*/elements"); |
| 79 |
71 // Since the /session/* is a wild card that would match the above URIs, this | 80 // Since the /session/* is a wild card that would match the above URIs, this |
72 // line MUST be the last registered URI with the server. | 81 // line MUST be the last registered URI with the server. |
73 SetCallback<SessionWithID>(ctx, "/session/*"); | 82 SetCallback<SessionWithID>(ctx, "/session/*"); |
74 } | 83 } |
75 } // namespace webdriver | 84 } // namespace webdriver |
76 | 85 |
77 // Sets up and runs the Mongoose HTTP server for the JSON over HTTP | 86 // Sets up and runs the Mongoose HTTP server for the JSON over HTTP |
78 // protcol of webdriver. The spec is located at: | 87 // protcol of webdriver. The spec is located at: |
79 // http://code.google.com/p/selenium/wiki/JsonWireProtocol. | 88 // http://code.google.com/p/selenium/wiki/JsonWireProtocol. |
80 int main(int argc, char *argv[]) { | 89 int main(int argc, char *argv[]) { |
81 struct mg_context *ctx; | 90 struct mg_context *ctx; |
82 base::AtExitManager exit; | 91 base::AtExitManager exit; |
83 std::string port = "8080"; | 92 std::string port = "9515"; |
84 #ifdef OS_POSIX | 93 #ifdef OS_POSIX |
85 CommandLine cmd_line = CommandLine(argc, argv); | 94 CommandLine cmd_line = CommandLine(argc, argv); |
86 #elif OS_WIN | 95 #elif OS_WIN |
87 std::string c; | 96 std::string c; |
88 | 97 |
89 for (int i = 0; i < argc; ++i) { | 98 for (int i = 0; i < argc; ++i) { |
90 c += std::string(argv[i]); | 99 c += std::string(argv[i]); |
91 } | 100 } |
92 CommandLine& cmd_line = CommandLine::FromString(ASCIIToWide(c)); | 101 CommandLine& cmd_line = CommandLine::FromString(ASCIIToWide(c)); |
93 #endif | 102 #endif |
94 | 103 |
95 // Init the commandline singleton from the env. | 104 // Init the commandline singleton from the env. |
96 CommandLine::Init(0, NULL); | 105 CommandLine::Init(0, NULL); |
97 | 106 |
98 #if OS_POSIX | 107 #if OS_POSIX |
99 signal(SIGPIPE, SIG_IGN); | 108 signal(SIGPIPE, SIG_IGN); |
100 signal(SIGCHLD, &signal_handler); | 109 signal(SIGCHLD, &signal_handler); |
101 #endif | 110 #endif |
102 srand((unsigned int)time(NULL)); | 111 srand((unsigned int)time(NULL)); |
103 | 112 |
104 if (cmd_line.HasSwitch(std::string("port"))) { | 113 if (cmd_line.HasSwitch(std::string("port"))) { |
105 port = cmd_line.GetSwitchValueASCII(std::string("port")); | 114 port = cmd_line.GetSwitchValueASCII(std::string("port")); |
106 } | 115 } |
107 | 116 |
108 VLOG(1) << "Using port: " << port; | 117 VLOG(1) << "Using port: " << port; |
109 webdriver::SessionManager* session = webdriver::SessionManager::GetInstance(); | 118 webdriver::SessionManager* session = webdriver::SessionManager::GetInstance(); |
110 session->SetIPAddress(port); | 119 session->SetIPAddress(port); |
111 | 120 |
112 // Initialize SHTTPD context. | 121 // Initialize SHTTPD context. |
113 // Listen on port 8080 or port specified on command line. | 122 // Listen on port 9515 or port specified on command line. |
114 // TODO(jmikhail) Maybe add port 8081 as a secure connection. | 123 // TODO(jmikhail) Maybe add port 9516 as a secure connection. |
115 ctx = mg_start(); | 124 ctx = mg_start(); |
116 mg_set_option(ctx, "ports", port.c_str()); | 125 mg_set_option(ctx, "ports", port.c_str()); |
117 | 126 |
118 webdriver::InitCallbacks(ctx); | 127 webdriver::InitCallbacks(ctx); |
119 | 128 |
120 std::cout << "Starting server" << std::endl; | 129 std::cout << "Starting server on port: " << port << std::endl; |
121 // The default behavior is to run this service forever. | 130 // The default behavior is to run this service forever. |
122 while (true) | 131 while (true) |
123 PlatformThread::Sleep(3600); | 132 PlatformThread::Sleep(3600); |
124 | 133 |
125 // We should not reach here since the service should never quit. | 134 // We should not reach here since the service should never quit. |
126 // TODO(jmikhail): register a listener for SIGTERM and break the | 135 // TODO(jmikhail): register a listener for SIGTERM and break the |
127 // message loop gracefully. | 136 // message loop gracefully. |
128 mg_stop(ctx); | 137 mg_stop(ctx); |
129 return (EXIT_SUCCESS); | 138 return (EXIT_SUCCESS); |
130 } | 139 } |
131 | 140 |
OLD | NEW |