// 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 #include "base/macros.h" #include "base/run_loop.h" #include "mojo/public/cpp/bindings/binding.h" #include "services/navigation/public/interfaces/view.mojom.h" #include "services/service_manager/public/cpp/service.h" #include "services/service_manager/public/cpp/service_test.h" namespace navigation { class NavigationTest : public service_manager::test::ServiceTest, public mojom::ViewClient { public: NavigationTest() : service_manager::test::ServiceTest("navigation_unittests"), binding_(this) {} ~NavigationTest() override {} protected: void SetUp() override { service_manager::test::ServiceTest::SetUp(); window_manager_connection_ = connector()->Connect("test_wm"); } mojom::ViewClientPtr GetViewClient() { return binding_.CreateInterfacePtrAndBind(); } void QuitOnLoadingStateChange(base::RunLoop* loop) { loop_ = loop; } private: // mojom::ViewClient: void OpenURL(mojom::OpenURLParamsPtr params) override {} void LoadingStateChanged(bool is_loading) override { // Should see loading start, then stop. if (++load_count_ == 2 && loop_) loop_->Quit(); } void NavigationStateChanged(const GURL& url, const std::string& title, bool can_go_back, bool can_go_forward) override {} void LoadProgressChanged(double progress) override {} void UpdateHoverURL(const GURL& url) override {} void ViewCreated(mojom::ViewPtr, mojom::ViewClientRequest, bool, const gfx::Rect&, bool) override {} void Close() override {} void NavigationPending(mojom::NavigationEntryPtr entry) override {} void NavigationCommitted( mojom::NavigationCommittedDetailsPtr details, int current_index) override {} void NavigationEntryChanged(mojom::NavigationEntryPtr entry, int entry_index) override {} void NavigationListPruned(bool from_front, int count) override {} int load_count_ = 0; mojo::Binding binding_; base::RunLoop* loop_ = nullptr; std::unique_ptr window_manager_connection_; DISALLOW_COPY_AND_ASSIGN(NavigationTest); }; // See crbug.com/619523 TEST_F(NavigationTest, DISABLED_Navigate) { mojom::ViewFactoryPtr view_factory; connector()->BindInterface("navigation", &view_factory); mojom::ViewPtr view; view_factory->CreateView(GetViewClient(), MakeRequest(&view)); view->NavigateTo(GURL("about:blank")); base::RunLoop loop; QuitOnLoadingStateChange(&loop); loop.Run(); } } // namespace navigation