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

Side by Side Diff: ash/common/shelf/shelf_model.cc

Issue 2718563008: mash: Use mojo for ShelfItemDelegate and [app] MenuItem. (Closed)
Patch Set: Address comments. Created 3 years, 9 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ash/common/shelf/shelf_model.h" 5 #include "ash/common/shelf/shelf_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "ash/common/shelf/shelf_item_delegate.h"
10 #include "ash/common/shelf/shelf_model_observer.h" 9 #include "ash/common/shelf/shelf_model_observer.h"
11 10
12 namespace ash { 11 namespace ash {
13 12
14 namespace { 13 namespace {
15 14
16 int ShelfItemTypeToWeight(ShelfItemType type) { 15 int ShelfItemTypeToWeight(ShelfItemType type) {
17 switch (type) { 16 switch (type) {
18 case TYPE_APP_LIST: 17 case TYPE_APP_LIST:
19 // TODO(skuhne): If the app list item becomes movable again, this need 18 // TODO(skuhne): If the app list item becomes movable again, this need
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 int ShelfModel::FirstPanelIndex() const { 151 int ShelfModel::FirstPanelIndex() const {
153 ShelfItem weight_dummy; 152 ShelfItem weight_dummy;
154 weight_dummy.type = TYPE_APP_PANEL; 153 weight_dummy.type = TYPE_APP_PANEL;
155 return std::lower_bound(items_.begin(), items_.end(), weight_dummy, 154 return std::lower_bound(items_.begin(), items_.end(), weight_dummy,
156 CompareByWeight) - 155 CompareByWeight) -
157 items_.begin(); 156 items_.begin();
158 } 157 }
159 158
160 void ShelfModel::SetShelfItemDelegate( 159 void ShelfModel::SetShelfItemDelegate(
161 ShelfID id, 160 ShelfID id,
162 std::unique_ptr<ShelfItemDelegate> item_delegate) { 161 std::unique_ptr<mojom::ShelfItemDelegate> item_delegate) {
163 // If another ShelfItemDelegate is already registered for |id|, we assume 162 // If another ShelfItemDelegate is already registered for |id|, we assume
164 // that this request is replacing ShelfItemDelegate for |id| with 163 // that this request is replacing ShelfItemDelegate for |id| with
165 // |item_delegate|. 164 // |item_delegate|.
166 RemoveShelfItemDelegate(id); 165 RemoveShelfItemDelegate(id);
167 166
168 for (auto& observer : observers_) 167 for (auto& observer : observers_)
169 observer.OnSetShelfItemDelegate(id, item_delegate.get()); 168 observer.OnSetShelfItemDelegate(id, item_delegate.get());
170 169
171 id_to_item_delegate_map_[id] = std::move(item_delegate); 170 id_to_item_delegate_map_[id] = std::move(item_delegate);
172 } 171 }
173 172
174 ShelfItemDelegate* ShelfModel::GetShelfItemDelegate(ShelfID id) { 173 mojom::ShelfItemDelegate* ShelfModel::GetShelfItemDelegate(ShelfID id) {
175 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) 174 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end())
176 return id_to_item_delegate_map_[id].get(); 175 return id_to_item_delegate_map_[id].get();
177 return nullptr; 176 return nullptr;
178 } 177 }
179 178
180 void ShelfModel::AddObserver(ShelfModelObserver* observer) { 179 void ShelfModel::AddObserver(ShelfModelObserver* observer) {
181 observers_.AddObserver(observer); 180 observers_.AddObserver(observer);
182 } 181 }
183 182
184 void ShelfModel::RemoveObserver(ShelfModelObserver* observer) { 183 void ShelfModel::RemoveObserver(ShelfModelObserver* observer) {
(...skipping 17 matching lines...) Expand all
202 201
203 return index; 202 return index;
204 } 203 }
205 204
206 void ShelfModel::RemoveShelfItemDelegate(ShelfID id) { 205 void ShelfModel::RemoveShelfItemDelegate(ShelfID id) {
207 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) 206 if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end())
208 id_to_item_delegate_map_.erase(id); 207 id_to_item_delegate_map_.erase(id);
209 } 208 }
210 209
211 } // namespace ash 210 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698