Index: components/web_view/web_view_apptest.cc |
diff --git a/components/web_view/web_view_apptest.cc b/components/web_view/web_view_apptest.cc |
deleted file mode 100644 |
index 391ca0103190f3f359a56cbe2e2227e49dffa633..0000000000000000000000000000000000000000 |
--- a/components/web_view/web_view_apptest.cc |
+++ /dev/null |
@@ -1,318 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/web_view/public/cpp/web_view.h" |
- |
-#include <stdint.h> |
-#include <utility> |
- |
-#include "base/base_paths.h" |
-#include "base/files/file_path.h" |
-#include "base/files/file_util.h" |
-#include "base/logging.h" |
-#include "base/macros.h" |
-#include "base/path_service.h" |
-#include "base/run_loop.h" |
-#include "components/mus/public/cpp/scoped_window_ptr.h" |
-#include "components/mus/public/cpp/tests/window_server_test_base.h" |
-#include "components/mus/public/cpp/window.h" |
-#include "components/mus/public/cpp/window_tree_connection.h" |
-#include "mojo/util/filename_util.h" |
-#include "url/gurl.h" |
- |
-namespace web_view { |
- |
-namespace { |
-const char kTestOneFile[] = "test_one.html"; |
-const char kTestOneTitle[] = "Test Title One"; |
-const char kTestTwoFile[] = "test_two.html"; |
-const char kTestTwoTitle[] = "Test Title Two"; |
-const char kTestThreeFile[] = "test_three.html"; |
-const char kTestThreeTitle[] = "Test Title Three"; |
-const char kTheWordGreenFiveTimes[] = "the_word_green_five_times.html"; |
-const char kTwoIframesWithGreen[] = "two_iframes_with_green.html"; |
- |
-GURL GetTestFileURL(const std::string& file) { |
- base::FilePath data_file; |
- CHECK(PathService::Get(base::DIR_SOURCE_ROOT, &data_file)); |
- data_file = data_file.AppendASCII("components/test/data/web_view") |
- .AppendASCII(file) |
- .NormalizePathSeparators(); |
- CHECK(base::PathExists(data_file)); |
- return mojo::util::FilePathToFileURL(data_file); |
-} |
-} |
- |
-class WebViewTest : public mus::WindowServerTestBase, |
- public mojom::WebViewClient { |
- public: |
- WebViewTest() |
- : web_view_(this), |
- quit_condition_(NO_QUIT), |
- active_find_match_(0), |
- find_count_(0) {} |
- ~WebViewTest() override {} |
- |
- mojom::WebView* web_view() { return web_view_.web_view(); } |
- |
- const std::string& navigation_url() const { return navigation_url_; } |
- const std::string& last_title() const { return last_title_; } |
- mojom::ButtonState last_back_button_state() { |
- return last_back_button_state_; |
- } |
- mojom::ButtonState last_forward_button_state() { |
- return last_forward_button_state_; |
- } |
- |
- int32_t active_find_match() const { return active_find_match_; } |
- int32_t find_count() const { return find_count_; } |
- |
- enum NestedLoopQuitCondition { |
- NO_QUIT, |
- LOADING_DONE, |
- FINAL_FIND_UPATE, |
- ACTIVE_FIND_UPDATE, |
- }; |
- |
- void StartNestedRunLoopUntil(NestedLoopQuitCondition quit_condition) { |
- quit_condition_ = quit_condition; |
- run_loop_.reset(new base::RunLoop); |
- run_loop_->Run(); |
- } |
- |
- void NavigateTo(const std::string& file) { |
- mojo::URLRequestPtr request(mojo::URLRequest::New()); |
- request->url = GetTestFileURL(file).spec(); |
- web_view()->LoadRequest(std::move(request)); |
- StartNestedRunLoopUntil(LOADING_DONE); |
- } |
- |
- private: |
- void QuitNestedRunLoop() { |
- if (run_loop_) { |
- quit_condition_ = NO_QUIT; |
- run_loop_->Quit(); |
- } |
- } |
- |
- // Overridden from mojo::ShellClient: |
- void Initialize(mojo::Shell* shell, const std::string& url, |
- uint32_t id) override { |
- WindowServerTestBase::Initialize(shell, url, id); |
- shell_ = shell; |
- } |
- |
- // Overridden from WindowTreeDelegate: |
- void OnEmbed(mus::Window* root) override { |
- content_ = root->connection()->NewWindow(); |
- content_->SetBounds(root->bounds()); |
- root->AddChild(content_); |
- content_->SetVisible(true); |
- |
- web_view_.Init(shell_, content_); |
- |
- WindowServerTestBase::OnEmbed(root); |
- } |
- |
- void TearDown() override { |
- ASSERT_EQ(1u, window_manager()->GetRoots().size()); |
- mus::ScopedWindowPtr::DeleteWindowOrWindowManager( |
- *window_manager()->GetRoots().begin()); |
- WindowServerTestBase::TearDown(); |
- } |
- |
- // Overridden from web_view::mojom::WebViewClient: |
- void TopLevelNavigateRequest(mojo::URLRequestPtr request) override {} |
- void TopLevelNavigationStarted(const mojo::String& url) override { |
- navigation_url_ = url.get(); |
- } |
- void LoadingStateChanged(bool is_loading, double progress) override { |
- if (is_loading == false && quit_condition_ == LOADING_DONE) |
- QuitNestedRunLoop(); |
- } |
- void BackForwardChanged(mojom::ButtonState back_button, |
- mojom::ButtonState forward_button) override { |
- last_back_button_state_ = back_button; |
- last_forward_button_state_ = forward_button; |
- } |
- void TitleChanged(const mojo::String& title) override { |
- last_title_ = title.get(); |
- } |
- void FindInPageMatchCountUpdated(int32_t request_id, |
- int32_t count, |
- bool final_update) override { |
- find_count_ = count; |
- if (final_update && quit_condition_ == FINAL_FIND_UPATE) |
- QuitNestedRunLoop(); |
- } |
- void FindInPageSelectionUpdated(int32_t request_id, |
- int32_t active_match_ordinal) override { |
- active_find_match_ = active_match_ordinal; |
- if (quit_condition_ == ACTIVE_FIND_UPDATE) |
- QuitNestedRunLoop(); |
- } |
- |
- mojo::Shell* shell_; |
- |
- mus::Window* content_; |
- |
- web_view::WebView web_view_; |
- |
- scoped_ptr<base::RunLoop> run_loop_; |
- |
- std::string navigation_url_; |
- std::string last_title_; |
- mojom::ButtonState last_back_button_state_; |
- mojom::ButtonState last_forward_button_state_; |
- |
- NestedLoopQuitCondition quit_condition_; |
- |
- int32_t active_find_match_; |
- int32_t find_count_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WebViewTest); |
-}; |
- |
-TEST_F(WebViewTest, TestTitleChanged) { |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTestOneFile)); |
- |
- // Our title should have been set on the navigation. |
- EXPECT_EQ(kTestOneTitle, last_title()); |
-} |
- |
-TEST_F(WebViewTest, CanGoBackAndForward) { |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTestOneFile)); |
- |
- // We can't go back on first navigation since there's nothing previously on |
- // the stack. |
- EXPECT_EQ(GetTestFileURL(kTestOneFile).spec(), navigation_url()); |
- EXPECT_EQ(kTestOneTitle, last_title()); |
- EXPECT_EQ(mojom::ButtonState::DISABLED, last_back_button_state()); |
- EXPECT_EQ(mojom::ButtonState::DISABLED, last_forward_button_state()); |
- |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTestTwoFile)); |
- |
- EXPECT_EQ(kTestTwoTitle, last_title()); |
- EXPECT_EQ(mojom::ButtonState::ENABLED, last_back_button_state()); |
- EXPECT_EQ(mojom::ButtonState::DISABLED, last_forward_button_state()); |
- |
- web_view()->GoBack(); |
- StartNestedRunLoopUntil(LOADING_DONE); |
- |
- EXPECT_EQ(GetTestFileURL(kTestOneFile).spec(), navigation_url()); |
- EXPECT_EQ(kTestOneTitle, last_title()); |
- EXPECT_EQ(mojom::ButtonState::DISABLED, last_back_button_state()); |
- EXPECT_EQ(mojom::ButtonState::ENABLED, last_forward_button_state()); |
- |
- web_view()->GoForward(); |
- StartNestedRunLoopUntil(LOADING_DONE); |
- EXPECT_EQ(GetTestFileURL(kTestTwoFile).spec(), navigation_url()); |
- EXPECT_EQ(kTestTwoTitle, last_title()); |
- EXPECT_EQ(mojom::ButtonState::ENABLED, last_back_button_state()); |
- EXPECT_EQ(mojom::ButtonState::DISABLED, last_forward_button_state()); |
-} |
- |
-TEST_F(WebViewTest, NavigationClearsForward) { |
- // First navigate somewhere, navigate somewhere else, and go back so we have |
- // one item in the forward stack. |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTestOneFile)); |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTestTwoFile)); |
- |
- web_view()->GoBack(); |
- StartNestedRunLoopUntil(LOADING_DONE); |
- |
- EXPECT_EQ(GetTestFileURL(kTestOneFile).spec(), navigation_url()); |
- EXPECT_EQ(kTestOneTitle, last_title()); |
- EXPECT_EQ(mojom::ButtonState::DISABLED, last_back_button_state()); |
- EXPECT_EQ(mojom::ButtonState::ENABLED, last_forward_button_state()); |
- |
- // Now navigate to a third file. This should clear the forward stack. |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTestThreeFile)); |
- |
- EXPECT_EQ(GetTestFileURL(kTestThreeFile).spec(), navigation_url()); |
- EXPECT_EQ(kTestThreeTitle, last_title()); |
- EXPECT_EQ(mojom::ButtonState::ENABLED, last_back_button_state()); |
- EXPECT_EQ(mojom::ButtonState::DISABLED, last_forward_button_state()); |
-} |
- |
-TEST_F(WebViewTest, Find) { |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTheWordGreenFiveTimes)); |
- |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(FINAL_FIND_UPATE); |
- EXPECT_EQ(1, active_find_match()); |
- EXPECT_EQ(5, find_count()); |
-} |
- |
-TEST_F(WebViewTest, FindAcrossIframes) { |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTwoIframesWithGreen)); |
- |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(FINAL_FIND_UPATE); |
- EXPECT_EQ(13, find_count()); |
-} |
- |
-TEST_F(WebViewTest, FindWrapAroundOneFrame) { |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTheWordGreenFiveTimes)); |
- |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(FINAL_FIND_UPATE); |
- EXPECT_EQ(1, active_find_match()); |
- |
- // Searching times 2 through 5 should increment the active find. |
- for (int i = 2; i < 6; ++i) { |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(ACTIVE_FIND_UPDATE); |
- EXPECT_EQ(i, active_find_match()); |
- } |
- |
- // We should wrap around. |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(ACTIVE_FIND_UPDATE); |
- EXPECT_EQ(1, active_find_match()); |
-} |
- |
-TEST_F(WebViewTest, FindForwardsAndBackwards) { |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTheWordGreenFiveTimes)); |
- |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(FINAL_FIND_UPATE); |
- EXPECT_EQ(1, active_find_match()); |
- |
- // Navigate two forwards. |
- for (int i = 2; i < 4; ++i) { |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(ACTIVE_FIND_UPDATE); |
- EXPECT_EQ(i, active_find_match()); |
- } |
- |
- // Navigate two backwards. |
- for (int i = 2; i > 0; --i) { |
- web_view()->Find("Green", false); |
- StartNestedRunLoopUntil(ACTIVE_FIND_UPDATE); |
- EXPECT_EQ(i, active_find_match()); |
- } |
-} |
- |
-TEST_F(WebViewTest, FindWrapAroundMultipleFrames) { |
- ASSERT_NO_FATAL_FAILURE(NavigateTo(kTwoIframesWithGreen)); |
- |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(FINAL_FIND_UPATE); |
- EXPECT_EQ(1, active_find_match()); |
- |
- // Searching times 2 through 13 should increment the active find. |
- for (int i = 2; i < 14; ++i) { |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(ACTIVE_FIND_UPDATE); |
- EXPECT_EQ(i, active_find_match()); |
- } |
- |
- // We should wrap around. |
- web_view()->Find("Green", true); |
- StartNestedRunLoopUntil(ACTIVE_FIND_UPDATE); |
- EXPECT_EQ(1, active_find_match()); |
-} |
- |
-} // namespace web_view |