| Index: chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc
|
| diff --git a/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc b/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc
|
| index 6febf8de9d1d334ec4ec43c9fe7fb11c4d8873a7..e86ea5ac9fbb7ccea01ce6b12b54e83c36c08723 100644
|
| --- a/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc
|
| +++ b/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc
|
| @@ -257,15 +257,27 @@ namespace {
|
|
|
| class FailToEvalScriptDevToolsClient : public StubDevToolsClient {
|
| public:
|
| + FailToEvalScriptDevToolsClient() : is_dom_getDocument_requested_(false) {}
|
| +
|
| virtual ~FailToEvalScriptDevToolsClient() {}
|
|
|
| virtual Status SendCommandAndGetResult(
|
| const std::string& method,
|
| const base::DictionaryValue& params,
|
| scoped_ptr<base::DictionaryValue>* result) OVERRIDE {
|
| + if (!is_dom_getDocument_requested_ && method == "DOM.getDocument") {
|
| + is_dom_getDocument_requested_ = true;
|
| + base::DictionaryValue result_dict;
|
| + result_dict.SetString("root.baseURL", "http://test");
|
| + result->reset(result_dict.DeepCopy());
|
| + return Status(kOk);
|
| + }
|
| EXPECT_STREQ("Runtime.evaluate", method.c_str());
|
| return Status(kUnknownError, "failed to eval script");
|
| }
|
| +
|
| + private:
|
| + bool is_dom_getDocument_requested_;
|
| };
|
|
|
| } // namespace
|
| @@ -284,10 +296,12 @@ namespace {
|
| class DeterminingLoadStateDevToolsClient : public StubDevToolsClient {
|
| public:
|
| DeterminingLoadStateDevToolsClient(
|
| + bool has_empty_base_url,
|
| bool is_loading,
|
| const std::string& send_event_first,
|
| base::DictionaryValue* send_event_first_params)
|
| - : is_loading_(is_loading),
|
| + : has_empty_base_url_(has_empty_base_url),
|
| + is_loading_(is_loading),
|
| send_event_first_(send_event_first),
|
| send_event_first_params_(send_event_first_params) {}
|
|
|
| @@ -297,6 +311,16 @@ class DeterminingLoadStateDevToolsClient : public StubDevToolsClient {
|
| const std::string& method,
|
| const base::DictionaryValue& params,
|
| scoped_ptr<base::DictionaryValue>* result) OVERRIDE {
|
| + if (method == "DOM.getDocument") {
|
| + base::DictionaryValue result_dict;
|
| + if (has_empty_base_url_)
|
| + result_dict.SetString("root.baseURL", std::string());
|
| + else
|
| + result_dict.SetString("root.baseURL", "http://test");
|
| + result->reset(result_dict.DeepCopy());
|
| + return Status(kOk);
|
| + }
|
| +
|
| if (send_event_first_.length()) {
|
| Status status = listeners_.front()
|
| ->OnEvent(this, send_event_first_, *send_event_first_params_);
|
| @@ -311,6 +335,7 @@ class DeterminingLoadStateDevToolsClient : public StubDevToolsClient {
|
| }
|
|
|
| private:
|
| + bool has_empty_base_url_;
|
| bool is_loading_;
|
| std::string send_event_first_;
|
| base::DictionaryValue* send_event_first_params_;
|
| @@ -318,9 +343,19 @@ class DeterminingLoadStateDevToolsClient : public StubDevToolsClient {
|
|
|
| } // namespace
|
|
|
| +TEST(NavigationTracker, UnknownStatePageNotLoadAtAll) {
|
| + base::DictionaryValue params;
|
| + DeterminingLoadStateDevToolsClient client(
|
| + true, true, std::string(), ¶ms);
|
| + BrowserInfo browser_info;
|
| + NavigationTracker tracker(&client, &browser_info);
|
| + ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", true));
|
| +}
|
| +
|
| TEST(NavigationTracker, UnknownStateForcesStart) {
|
| base::DictionaryValue params;
|
| - DeterminingLoadStateDevToolsClient client(true, std::string(), ¶ms);
|
| + DeterminingLoadStateDevToolsClient client(
|
| + false, true, std::string(), ¶ms);
|
| BrowserInfo browser_info;
|
| NavigationTracker tracker(&client, &browser_info);
|
| ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", true));
|
| @@ -330,7 +365,7 @@ TEST(NavigationTracker, UnknownStateForcesStartReceivesStop) {
|
| base::DictionaryValue params;
|
| params.SetString("frameId", "f");
|
| DeterminingLoadStateDevToolsClient client(
|
| - true, "Page.frameStoppedLoading", ¶ms);
|
| + false, true, "Page.frameStoppedLoading", ¶ms);
|
| BrowserInfo browser_info;
|
| NavigationTracker tracker(&client, &browser_info);
|
| ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", false));
|
| @@ -340,7 +375,7 @@ TEST(NavigationTracker, OnSuccessfulNavigate) {
|
| base::DictionaryValue params;
|
| params.SetString("frameId", "f");
|
| DeterminingLoadStateDevToolsClient client(
|
| - true, "Page.frameStoppedLoading", ¶ms);
|
| + false, true, "Page.frameStoppedLoading", ¶ms);
|
| BrowserInfo browser_info;
|
| NavigationTracker tracker(
|
| &client, NavigationTracker::kNotLoading, &browser_info);
|
| @@ -351,7 +386,8 @@ TEST(NavigationTracker, OnSuccessfulNavigate) {
|
| TEST(NavigationTracker, OnSuccessfulNavigateStillWaiting) {
|
| base::DictionaryValue params;
|
| params.SetString("frameId", "f");
|
| - DeterminingLoadStateDevToolsClient client(true, std::string(), ¶ms);
|
| + DeterminingLoadStateDevToolsClient client(
|
| + false, true, std::string(), ¶ms);
|
| BrowserInfo browser_info;
|
| NavigationTracker tracker(
|
| &client, NavigationTracker::kNotLoading, &browser_info);
|
|
|