summaryrefslogtreecommitdiff
path: root/chromium/services/navigation/navigation_unittest.cc
blob: 5dfc8adbbb035fdc5e9fe1da3b013db5be0c7824 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// 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 <memory>

#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<mojom::ViewClient> binding_;
  base::RunLoop* loop_ = nullptr;
  std::unique_ptr<service_manager::Connection> 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