OLD | NEW |
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/app_driver/app_driver.h" | 5 #include "mash/app_driver/app_driver.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 "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 }; | 50 }; |
51 | 51 |
52 void AssertTrue(bool success) { | 52 void AssertTrue(bool success) { |
53 DCHECK(success); | 53 DCHECK(success); |
54 } | 54 } |
55 | 55 |
56 void DoNothing() {} | 56 void DoNothing() {} |
57 | 57 |
58 } // namespace | 58 } // namespace |
59 | 59 |
60 AppDriver::AppDriver() | 60 AppDriver::AppDriver() : binding_(this), weak_factory_(this) {} |
61 : connector_(nullptr), binding_(this), weak_factory_(this) {} | |
62 | 61 |
63 AppDriver::~AppDriver() {} | 62 AppDriver::~AppDriver() {} |
64 | 63 |
65 void AppDriver::OnAvailableCatalogEntries( | 64 void AppDriver::OnAvailableCatalogEntries( |
66 mojo::Array<catalog::mojom::EntryPtr> entries) { | 65 mojo::Array<catalog::mojom::EntryPtr> entries) { |
67 if (entries.empty()) { | 66 if (entries.empty()) { |
68 LOG(ERROR) << "Unable to install accelerators for launching chrome."; | 67 LOG(ERROR) << "Unable to install accelerators for launching chrome."; |
69 return; | 68 return; |
70 } | 69 } |
71 | 70 |
72 ui::mojom::AcceleratorRegistrarPtr registrar; | 71 ui::mojom::AcceleratorRegistrarPtr registrar; |
73 connector_->ConnectToInterface(entries[0]->name, ®istrar); | 72 connector()->ConnectToInterface(entries[0]->name, ®istrar); |
74 | 73 |
75 if (binding_.is_bound()) | 74 if (binding_.is_bound()) |
76 binding_.Unbind(); | 75 binding_.Unbind(); |
77 registrar->SetHandler(binding_.CreateInterfacePtrAndBind()); | 76 registrar->SetHandler(binding_.CreateInterfacePtrAndBind()); |
78 // If the window manager restarts, the handler pipe will close and we'll need | 77 // If the window manager restarts, the handler pipe will close and we'll need |
79 // to re-add our accelerators when the window manager comes back up. | 78 // to re-add our accelerators when the window manager comes back up. |
80 binding_.set_connection_error_handler( | 79 binding_.set_connection_error_handler( |
81 base::Bind(&AppDriver::AddAccelerators, weak_factory_.GetWeakPtr())); | 80 base::Bind(&AppDriver::AddAccelerators, weak_factory_.GetWeakPtr())); |
82 | 81 |
83 for (const AcceleratorSpec& spec : g_spec) { | 82 for (const AcceleratorSpec& spec : g_spec) { |
84 registrar->AddAccelerator( | 83 registrar->AddAccelerator( |
85 static_cast<uint32_t>(spec.id), | 84 static_cast<uint32_t>(spec.id), |
86 ui::CreateKeyMatcher(spec.keyboard_code, spec.event_flags), | 85 ui::CreateKeyMatcher(spec.keyboard_code, spec.event_flags), |
87 base::Bind(&AssertTrue)); | 86 base::Bind(&AssertTrue)); |
88 } | 87 } |
89 } | 88 } |
90 | 89 |
91 void AppDriver::OnStart(shell::Connector* connector, | 90 void AppDriver::OnStart(const shell::Identity& identity) { |
92 const shell::Identity& identity, | |
93 uint32_t id) { | |
94 connector_ = connector; | |
95 AddAccelerators(); | 91 AddAccelerators(); |
96 } | 92 } |
97 | 93 |
98 bool AppDriver::OnConnect(shell::Connection* connection) { | 94 bool AppDriver::OnConnect(shell::Connection* connection) { |
99 return true; | 95 return true; |
100 } | 96 } |
101 | 97 |
102 bool AppDriver::OnStop() { | 98 bool AppDriver::OnStop() { |
103 // Prevent the code in AddAccelerators() from keeping this app alive. | 99 // Prevent the code in AddAccelerators() from keeping this app alive. |
104 binding_.set_connection_error_handler(base::Bind(&DoNothing)); | 100 binding_.set_connection_error_handler(base::Bind(&DoNothing)); |
(...skipping 17 matching lines...) Expand all Loading... |
122 {Accelerator::ShowTaskManager, | 118 {Accelerator::ShowTaskManager, |
123 {mojom::kWindow, "mojo:task_viewer", LaunchMode::DEFAULT}}, | 119 {mojom::kWindow, "mojo:task_viewer", LaunchMode::DEFAULT}}, |
124 {Accelerator::ToggleTouchHud, | 120 {Accelerator::ToggleTouchHud, |
125 {mojom::kWindow, "mojo:touch_hud", LaunchMode::DEFAULT}}, | 121 {mojom::kWindow, "mojo:touch_hud", LaunchMode::DEFAULT}}, |
126 }; | 122 }; |
127 | 123 |
128 const auto iter = options.find(static_cast<Accelerator>(id)); | 124 const auto iter = options.find(static_cast<Accelerator>(id)); |
129 DCHECK(iter != options.end()); | 125 DCHECK(iter != options.end()); |
130 const LaunchOptions& entry = iter->second; | 126 const LaunchOptions& entry = iter->second; |
131 LaunchablePtr launchable; | 127 LaunchablePtr launchable; |
132 connector_->ConnectToInterface(entry.app, &launchable); | 128 connector()->ConnectToInterface(entry.app, &launchable); |
133 launchable->Launch(entry.option, entry.mode); | 129 launchable->Launch(entry.option, entry.mode); |
134 } | 130 } |
135 | 131 |
136 void AppDriver::AddAccelerators() { | 132 void AppDriver::AddAccelerators() { |
137 connector_->ConnectToInterface("mojo:catalog", &catalog_); | 133 connector()->ConnectToInterface("mojo:catalog", &catalog_); |
138 catalog_->GetEntriesProvidingClass( | 134 catalog_->GetEntriesProvidingClass( |
139 "mus:window_manager", base::Bind(&AppDriver::OnAvailableCatalogEntries, | 135 "mus:window_manager", base::Bind(&AppDriver::OnAvailableCatalogEntries, |
140 weak_factory_.GetWeakPtr())); | 136 weak_factory_.GetWeakPtr())); |
141 } | 137 } |
142 | 138 |
143 } // namespace app_driver | 139 } // namespace app_driver |
144 } // namespace mash | 140 } // namespace mash |
OLD | NEW |