Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: mandoline/ui/browser/browser_apptest.cc

Issue 1195003002: Mandoline: Introduce ApplicationConnection::CloseConnection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added test Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "mandoline/ui/browser/browser.h"
sky 2015/06/29 16:56:02 nit: newline after this line.
Fady Samuel 2015/06/29 20:32:36 Done.
6 #include "mandoline/ui/browser/browser_delegate.h"
7 #include "mojo/application/public/cpp/application_connection.h"
8 #include "mojo/application/public/cpp/application_delegate.h"
9 #include "mojo/application/public/cpp/application_impl.h"
10 #include "mojo/application/public/cpp/application_test_base.h"
11
12 namespace mandoline {
13
14 class BrowserTest : public mojo::test::ApplicationTestBase,
15 public mojo::ApplicationDelegate,
16 public BrowserDelegate {
17 public:
18 BrowserTest() : app_(nullptr), last_closed_connection_(nullptr) {}
19
20 // Creates a new Browser object.
21 Browser* CreateBrowser() {
22 DCHECK(app_);
sky 2015/06/29 16:56:02 If you can, avoid DCHECKs in tests. They trigger a
Fady Samuel 2015/06/29 20:32:36 Done.
23 Browser* browser = new Browser(app_, this);
24 browsers_.insert(browser);
25 return browser;
26 }
27
28 // Returns the last ApplicationConnection closed.
29 mojo::ApplicationConnection* last_closed_connection() {
30 return last_closed_connection_;
31 }
32
33 // Overridden from ApplicationDelegate:
34 void Initialize(mojo::ApplicationImpl* app) override {
35 app_ = app;
36 }
37
38 void OnWillCloseConnection(mojo::ApplicationConnection* connection) override {
39 // WARNING: DO NOT FOLLOW THIS POINTER. IT WILL BE DESTROYED.
40 last_closed_connection_ = connection;
41 }
42
43 // ApplicationTestBase:
44 ApplicationDelegate* GetApplicationDelegate() override { return this; }
45
46 // Overridden from BrowserDelegate:
47 void BrowserClosed(Browser* browser) override {
48 scoped_ptr<Browser> browser_owner(browser);
49 DCHECK_GT(browsers_.count(browser), 0u);
50 browsers_.erase(browser);
51 }
52
53 bool InitUIIfNecessary(Browser* browser, mojo::View* root_view) override {
54 return true;
55 }
56
57 private:
58 mojo::ApplicationImpl* app_;
59 mojo::ApplicationConnection* last_closed_connection_;
60 std::set<Browser*> browsers_;
61
62 MOJO_DISALLOW_COPY_AND_ASSIGN(BrowserTest);
63 };
64
65 // This test verifies that closing a Browser closes the associated application
66 // connection with the view manager.
67 TEST_F(BrowserTest, ClosingBrowserClosesAppConnetion) {
68 Browser* browser = CreateBrowser();
69 ASSERT_NE(nullptr, browser);
70 mojo::ApplicationConnection* view_manager_connection =
71 browser->GetViewManagerConnectionForTesting();
72 ASSERT_NE(nullptr, view_manager_connection);
73 BrowserClosed(browser);
74 EXPECT_EQ(last_closed_connection(), view_manager_connection);
75 }
76
77 } // namespace mandoline
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698