OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/dom_ui/app_launcher_handler.h" | 5 #include "chrome/browser/dom_ui/app_launcher_handler.h" |
6 | 6 |
7 #include "app/animation.h" | 7 #include "app/animation.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "base/string_split.h" | 10 #include "base/string_split.h" |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 dictionary->SetBoolean("disableAppWindowLaunch", true); | 186 dictionary->SetBoolean("disableAppWindowLaunch", true); |
187 dictionary->SetBoolean("disableCreateAppShortcut", true); | 187 dictionary->SetBoolean("disableCreateAppShortcut", true); |
188 #endif | 188 #endif |
189 | 189 |
190 #if defined(OS_CHROMEOS) | 190 #if defined(OS_CHROMEOS) |
191 // Making shortcut does not make sense on ChromeOS because it does not have | 191 // Making shortcut does not make sense on ChromeOS because it does not have |
192 // a desktop. | 192 // a desktop. |
193 dictionary->SetBoolean("disableCreateAppShortcut", true); | 193 dictionary->SetBoolean("disableCreateAppShortcut", true); |
194 #endif | 194 #endif |
195 | 195 |
196 // We always show the launcher on Chrome OS. On Desktop Chrome, only show it | |
197 // if we've installed our default apps. | |
198 #if defined(OS_CHROMEOS) | |
199 dictionary->SetBoolean("showLauncher", true); | |
200 #else | |
201 dictionary->SetBoolean( | 196 dictionary->SetBoolean( |
202 "showLauncher", | 197 "showLauncher", |
203 extensions_service_->default_apps()->GetDefaultAppsInstalled()); | 198 extensions_service_->default_apps()->ShouldShowAppLauncher( |
204 #endif | 199 extensions_service_->GetAppIds())); |
205 } | 200 } |
206 | 201 |
207 void AppLauncherHandler::HandleGetApps(const ListValue* args) { | 202 void AppLauncherHandler::HandleGetApps(const ListValue* args) { |
208 DictionaryValue dictionary; | 203 DictionaryValue dictionary; |
209 FillAppDictionary(&dictionary); | 204 FillAppDictionary(&dictionary); |
210 | 205 |
211 // Tell the client whether to show the promo for this view. We don't do this | 206 // Tell the client whether to show the promo for this view. We don't do this |
212 // in the case of PREF_CHANGED because: | 207 // in the case of PREF_CHANGED because: |
213 // | 208 // |
214 // a) At that point in time, depending on the pref that changed, it can look | 209 // a) At that point in time, depending on the pref that changed, it can look |
215 // like the set of apps installed has changed, and we will mark the promo | 210 // like the set of apps installed has changed, and we will mark the promo |
216 // expired. | 211 // expired. |
217 // b) Conceptually, it doesn't really make sense to count a | 212 // b) Conceptually, it doesn't really make sense to count a |
218 // prefchange-triggered refresh as a promo 'view'. | 213 // prefchange-triggered refresh as a promo 'view'. |
219 DefaultApps* default_apps = extensions_service_->default_apps(); | 214 DefaultApps* default_apps = extensions_service_->default_apps(); |
220 if (default_apps->CheckShouldShowPromo(extensions_service_->GetAppIds())) { | 215 if (default_apps->ShouldShowPromo(extensions_service_->GetAppIds())) { |
221 dictionary.SetBoolean("showPromo", true); | 216 dictionary.SetBoolean("showPromo", true); |
222 default_apps->DidShowPromo(); | 217 default_apps->DidShowPromo(); |
223 promo_active_ = true; | 218 promo_active_ = true; |
224 } else { | 219 } else { |
225 dictionary.SetBoolean("showPromo", false); | 220 dictionary.SetBoolean("showPromo", false); |
226 promo_active_ = false; | 221 promo_active_ = false; |
227 } | 222 } |
228 | 223 |
229 dom_ui_->CallJavascriptFunction(L"getAppsCallback", dictionary); | 224 dom_ui_->CallJavascriptFunction(L"getAppsCallback", dictionary); |
230 | 225 |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 GetExtensionInstallUI()->ConfirmUninstall(this, extension); | 323 GetExtensionInstallUI()->ConfirmUninstall(this, extension); |
329 } | 324 } |
330 | 325 |
331 void AppLauncherHandler::HandleHideAppsPromo(const ListValue* args) { | 326 void AppLauncherHandler::HandleHideAppsPromo(const ListValue* args) { |
332 // If the user has intentionally hidden the promotion, we'll uninstall all the | 327 // If the user has intentionally hidden the promotion, we'll uninstall all the |
333 // default apps (we know the user hasn't installed any apps on their own at | 328 // default apps (we know the user hasn't installed any apps on their own at |
334 // this point, or the promotion wouldn't have been shown). | 329 // this point, or the promotion wouldn't have been shown). |
335 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram, | 330 UMA_HISTOGRAM_ENUMERATION(extension_misc::kAppsPromoHistogram, |
336 extension_misc::PROMO_CLOSE, | 331 extension_misc::PROMO_CLOSE, |
337 extension_misc::PROMO_BUCKET_BOUNDARY); | 332 extension_misc::PROMO_BUCKET_BOUNDARY); |
| 333 |
338 DefaultApps* default_apps = extensions_service_->default_apps(); | 334 DefaultApps* default_apps = extensions_service_->default_apps(); |
339 const ExtensionIdSet* app_ids = default_apps->GetDefaultApps(); | 335 const ExtensionIdSet& app_ids = default_apps->default_apps(); |
340 DCHECK(*app_ids == extensions_service_->GetAppIds()); | 336 for (ExtensionIdSet::const_iterator iter = app_ids.begin(); |
341 | 337 iter != app_ids.end(); ++iter) { |
342 for (ExtensionIdSet::const_iterator iter = app_ids->begin(); | |
343 iter != app_ids->end(); ++iter) { | |
344 if (extensions_service_->GetExtensionById(*iter, true)) | 338 if (extensions_service_->GetExtensionById(*iter, true)) |
345 extensions_service_->UninstallExtension(*iter, false); | 339 extensions_service_->UninstallExtension(*iter, false); |
346 } | 340 } |
347 | 341 |
348 extensions_service_->default_apps()->SetPromoHidden(); | 342 extensions_service_->default_apps()->SetPromoHidden(); |
349 } | 343 } |
350 | 344 |
351 void AppLauncherHandler::HandleCreateAppShortcut(const ListValue* args) { | 345 void AppLauncherHandler::HandleCreateAppShortcut(const ListValue* args) { |
352 std::string extension_id; | 346 std::string extension_id; |
353 if (!args->GetString(0, &extension_id)) { | 347 if (!args->GetString(0, &extension_id)) { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 // We make this check for the case of minimized windows, unit tests, etc. | 411 // We make this check for the case of minimized windows, unit tests, etc. |
418 if (platform_util::IsVisible(dom_ui_->tab_contents()->GetNativeView()) && | 412 if (platform_util::IsVisible(dom_ui_->tab_contents()->GetNativeView()) && |
419 Animation::ShouldRenderRichAnimation()) { | 413 Animation::ShouldRenderRichAnimation()) { |
420 #if defined(OS_WIN) | 414 #if defined(OS_WIN) |
421 AppLaunchedAnimation::Show(extension, rect); | 415 AppLaunchedAnimation::Show(extension, rect); |
422 #else | 416 #else |
423 NOTIMPLEMENTED(); | 417 NOTIMPLEMENTED(); |
424 #endif | 418 #endif |
425 } | 419 } |
426 } | 420 } |
OLD | NEW |