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

Side by Side Diff: mash/browser_driver/browser_driver_application_delegate.cc

Issue 1674903003: Extract shell methods from ApplicationImpl into a base class, and pass this to Initialize() instead. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojom
Patch Set: . Created 4 years, 10 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mash/browser_driver/browser_driver_application_delegate.h" 5 #include "mash/browser_driver/browser_driver_application_delegate.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "components/mus/public/cpp/event_matcher.h" 10 #include "components/mus/public/cpp/event_matcher.h"
11 #include "mojo/shell/public/cpp/application_connection.h" 11 #include "mojo/shell/public/cpp/application_connection.h"
12 #include "mojo/shell/public/cpp/application_impl.h" 12 #include "mojo/shell/public/cpp/shell.h"
13 13
14 namespace mash { 14 namespace mash {
15 namespace browser_driver { 15 namespace browser_driver {
16 namespace { 16 namespace {
17 17
18 enum class Accelerator : uint32_t { 18 enum class Accelerator : uint32_t {
19 NewWindow, 19 NewWindow,
20 NewTab, 20 NewTab,
21 NewIncognitoWindow, 21 NewIncognitoWindow,
22 }; 22 };
(...skipping 15 matching lines...) Expand all
38 mus::mojom::kEventFlagControlDown | mus::mojom::kEventFlagShiftDown}, 38 mus::mojom::kEventFlagControlDown | mus::mojom::kEventFlagShiftDown},
39 }; 39 };
40 40
41 void AssertTrue(bool success) { 41 void AssertTrue(bool success) {
42 DCHECK(success); 42 DCHECK(success);
43 } 43 }
44 44
45 } // namespace 45 } // namespace
46 46
47 BrowserDriverApplicationDelegate::BrowserDriverApplicationDelegate() 47 BrowserDriverApplicationDelegate::BrowserDriverApplicationDelegate()
48 : app_(nullptr), 48 : shell_(nullptr),
49 binding_(this) {} 49 binding_(this) {}
50 50
51 BrowserDriverApplicationDelegate::~BrowserDriverApplicationDelegate() {} 51 BrowserDriverApplicationDelegate::~BrowserDriverApplicationDelegate() {}
52 52
53 void BrowserDriverApplicationDelegate::Initialize(mojo::ApplicationImpl* app) { 53 void BrowserDriverApplicationDelegate::Initialize(mojo::Shell* shell,
54 app_ = app; 54 const std::string& url,
55 uint32_t id) {
56 shell_ = shell;
55 AddAccelerators(); 57 AddAccelerators();
56 } 58 }
57 59
58 bool BrowserDriverApplicationDelegate::AcceptConnection( 60 bool BrowserDriverApplicationDelegate::AcceptConnection(
59 mojo::ApplicationConnection* connection) { 61 mojo::ApplicationConnection* connection) {
60 return true; 62 return true;
61 } 63 }
62 64
63 void BrowserDriverApplicationDelegate::OnAccelerator( 65 void BrowserDriverApplicationDelegate::OnAccelerator(
64 uint32_t id, mus::mojom::EventPtr event) { 66 uint32_t id, mus::mojom::EventPtr event) {
65 switch (static_cast<Accelerator>(id)) { 67 switch (static_cast<Accelerator>(id)) {
66 case Accelerator::NewWindow: 68 case Accelerator::NewWindow:
67 case Accelerator::NewTab: 69 case Accelerator::NewTab:
68 case Accelerator::NewIncognitoWindow: 70 case Accelerator::NewIncognitoWindow:
69 app_->ConnectToApplication("exe:chrome"); 71 shell_->ConnectToApplication("exe:chrome");
70 // TODO(beng): have Chrome export a service that allows it to be driven by 72 // TODO(beng): have Chrome export a service that allows it to be driven by
71 // this driver, e.g. to open new tabs, incognito windows, etc. 73 // this driver, e.g. to open new tabs, incognito windows, etc.
72 break; 74 break;
73 default: 75 default:
74 NOTREACHED(); 76 NOTREACHED();
75 break; 77 break;
76 } 78 }
77 } 79 }
78 80
79 void BrowserDriverApplicationDelegate::AddAccelerators() { 81 void BrowserDriverApplicationDelegate::AddAccelerators() {
80 // TODO(beng): find some other way to get the window manager. I don't like 82 // TODO(beng): find some other way to get the window manager. I don't like
81 // having to specify it by URL because it may differ per display. 83 // having to specify it by URL because it may differ per display.
82 mus::mojom::AcceleratorRegistrarPtr registrar; 84 mus::mojom::AcceleratorRegistrarPtr registrar;
83 app_->ConnectToService("mojo:desktop_wm", &registrar); 85 shell_->ConnectToService("mojo:desktop_wm", &registrar);
84 86
85 if (binding_.is_bound()) 87 if (binding_.is_bound())
86 binding_.Unbind(); 88 binding_.Unbind();
87 registrar->SetHandler(binding_.CreateInterfacePtrAndBind()); 89 registrar->SetHandler(binding_.CreateInterfacePtrAndBind());
88 // If the window manager restarts, the handler pipe will close and we'll need 90 // If the window manager restarts, the handler pipe will close and we'll need
89 // to re-add our accelerators when the window manager comes back up. 91 // to re-add our accelerators when the window manager comes back up.
90 binding_.set_connection_error_handler( 92 binding_.set_connection_error_handler(
91 base::Bind(&BrowserDriverApplicationDelegate::AddAccelerators, 93 base::Bind(&BrowserDriverApplicationDelegate::AddAccelerators,
92 base::Unretained(this))); 94 base::Unretained(this)));
93 95
94 for (const AcceleratorSpec& spec : g_spec) { 96 for (const AcceleratorSpec& spec : g_spec) {
95 registrar->AddAccelerator( 97 registrar->AddAccelerator(
96 static_cast<uint32_t>(spec.id), 98 static_cast<uint32_t>(spec.id),
97 mus::CreateKeyMatcher(spec.keyboard_code, spec.event_flags), 99 mus::CreateKeyMatcher(spec.keyboard_code, spec.event_flags),
98 base::Bind(&AssertTrue)); 100 base::Bind(&AssertTrue));
99 } 101 }
100 } 102 }
101 103
102 } // namespace browser_driver 104 } // namespace browser_driver
103 } // namespace main 105 } // namespace main
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698