| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.h" | 5 #include "chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.h" |
| 6 | 6 |
| 7 #include "ash/shelf/shelf_model.h" | 7 #include "ash/shelf/shelf_model.h" |
| 8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 if (it == app_controller_map_.end()) | 112 if (it == app_controller_map_.end()) |
| 113 return; | 113 return; |
| 114 | 114 |
| 115 const ash::ShelfID shelf_id = owner_->GetShelfIDForAppID(shelf_app_id); | 115 const ash::ShelfID shelf_id = owner_->GetShelfIDForAppID(shelf_app_id); |
| 116 ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model(); | 116 ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model(); |
| 117 const bool need_close_item = | 117 const bool need_close_item = |
| 118 it->second == shelf_model->GetShelfItemDelegate(shelf_id); | 118 it->second == shelf_model->GetShelfItemDelegate(shelf_id); |
| 119 app_controller_map_.erase(it); | 119 app_controller_map_.erase(it); |
| 120 if (need_close_item) | 120 if (need_close_item) |
| 121 owner_->CloseLauncherItem(shelf_id); | 121 owner_->CloseLauncherItem(shelf_id); |
| 122 owner_->OnAppUpdated(owner_->profile(), shelf_app_id); | 122 UpdateApp(shelf_app_id); |
| 123 } | 123 } |
| 124 | 124 |
| 125 void ArcAppDeferredLauncherController::OnAppReadyChanged( | 125 void ArcAppDeferredLauncherController::OnAppReadyChanged( |
| 126 const std::string& app_id, | 126 const std::string& app_id, |
| 127 bool ready) { | 127 bool ready) { |
| 128 if (!ready || app_controller_map_.empty()) | 128 if (!ready || app_controller_map_.empty()) |
| 129 return; | 129 return; |
| 130 | 130 |
| 131 const std::string shelf_app_id = | 131 const std::string shelf_app_id = |
| 132 ArcAppWindowLauncherController::GetShelfAppIdFromArcAppId(app_id); | 132 ArcAppWindowLauncherController::GetShelfAppIdFromArcAppId(app_id); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 163 | 163 |
| 164 base::TimeDelta ArcAppDeferredLauncherController::GetActiveTime( | 164 base::TimeDelta ArcAppDeferredLauncherController::GetActiveTime( |
| 165 const std::string& shelf_app_id) const { | 165 const std::string& shelf_app_id) const { |
| 166 AppControllerMap::const_iterator it = app_controller_map_.find(shelf_app_id); | 166 AppControllerMap::const_iterator it = app_controller_map_.find(shelf_app_id); |
| 167 if (it == app_controller_map_.end()) | 167 if (it == app_controller_map_.end()) |
| 168 return base::TimeDelta(); | 168 return base::TimeDelta(); |
| 169 | 169 |
| 170 return it->second->GetActiveTime(); | 170 return it->second->GetActiveTime(); |
| 171 } | 171 } |
| 172 | 172 |
| 173 void ArcAppDeferredLauncherController::UpdateApp(const std::string& app_id) { |
| 174 AppIconLoader* acon_loader = owner_->GetAppIconLoaderForApp(app_id); |
| 175 if (acon_loader) |
| 176 acon_loader->UpdateImage(app_id); |
| 177 } |
| 178 |
| 173 void ArcAppDeferredLauncherController::UpdateApps() { | 179 void ArcAppDeferredLauncherController::UpdateApps() { |
| 174 if (app_controller_map_.empty()) | 180 if (app_controller_map_.empty()) |
| 175 return; | 181 return; |
| 176 | 182 |
| 177 RegisterNextUpdate(); | 183 RegisterNextUpdate(); |
| 178 for (const auto pair : app_controller_map_) | 184 for (const auto pair : app_controller_map_) |
| 179 owner_->OnAppUpdated(owner_->profile(), pair.first); | 185 UpdateApp(pair.first); |
| 180 } | 186 } |
| 181 | 187 |
| 182 void ArcAppDeferredLauncherController::RegisterNextUpdate() { | 188 void ArcAppDeferredLauncherController::RegisterNextUpdate() { |
| 183 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 189 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 184 FROM_HERE, base::Bind(&ArcAppDeferredLauncherController::UpdateApps, | 190 FROM_HERE, base::Bind(&ArcAppDeferredLauncherController::UpdateApps, |
| 185 weak_ptr_factory_.GetWeakPtr()), | 191 weak_ptr_factory_.GetWeakPtr()), |
| 186 base::TimeDelta::FromMilliseconds(kUpdateIconIntervalMs)); | 192 base::TimeDelta::FromMilliseconds(kUpdateIconIntervalMs)); |
| 187 } | 193 } |
| 188 | 194 |
| 189 void ArcAppDeferredLauncherController::RegisterDeferredLaunch( | 195 void ArcAppDeferredLauncherController::RegisterDeferredLaunch( |
| (...skipping 26 matching lines...) Expand all Loading... |
| 216 ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model(); | 222 ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model(); |
| 217 shelf_model->SetShelfItemDelegate(shelf_id, std::move(controller)); | 223 shelf_model->SetShelfItemDelegate(shelf_id, std::move(controller)); |
| 218 owner_->SetItemStatus(shelf_id, ash::STATUS_RUNNING); | 224 owner_->SetItemStatus(shelf_id, ash::STATUS_RUNNING); |
| 219 } | 225 } |
| 220 | 226 |
| 221 if (app_controller_map_.empty()) | 227 if (app_controller_map_.empty()) |
| 222 RegisterNextUpdate(); | 228 RegisterNextUpdate(); |
| 223 | 229 |
| 224 app_controller_map_[shelf_app_id] = item_controller; | 230 app_controller_map_[shelf_app_id] = item_controller; |
| 225 } | 231 } |
| OLD | NEW |