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 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/app_list/app_list_util.h" 6 7#include "base/metrics/field_trial.h" 8#include "base/prefs/pref_registry_simple.h" 9#include "base/prefs/pref_service.h" 10#include "chrome/browser/browser_process.h" 11#include "chrome/browser/ui/host_desktop.h" 12#include "chrome/common/pref_names.h" 13 14namespace { 15 16#if defined(ENABLE_APP_LIST) 17// The field trial group name that enables showing the promo. 18const char kShowLauncherPromoOnceGroupName[] = "ShowPromoUntilDismissed"; 19 20// The field trial group name that resets the pref to show the app launcher 21// promo on every session startup. 22const char kResetShowLauncherPromoPrefGroupName[] = "ResetShowPromoPref"; 23 24// The name of the field trial that controls showing the app launcher promo. 25const char kLauncherPromoTrialName[] = "ShowAppLauncherPromo"; 26#endif // defined(ENABLE_APP_LIST) 27 28} // namespace 29 30void SetupShowAppLauncherPromoFieldTrial(PrefService* local_state) { 31#if defined(ENABLE_APP_LIST) 32 if (base::FieldTrialList::FindFullName(kLauncherPromoTrialName) == 33 kResetShowLauncherPromoPrefGroupName) { 34 local_state->SetBoolean(prefs::kShowAppLauncherPromo, true); 35 } 36#endif 37} 38 39bool IsAppLauncherEnabled() { 40#if !defined(ENABLE_APP_LIST) 41 return false; 42 43#elif defined(OS_CHROMEOS) 44 return true; 45 46#else // defined(ENABLE_APP_LIST) && !defined(OS_CHROMEOS) 47 if (chrome::GetActiveDesktop() == chrome::HOST_DESKTOP_TYPE_ASH) 48 return true; 49 50 PrefService* prefs = g_browser_process->local_state(); 51 // In some tests, the prefs aren't initialised. 52 return prefs && prefs->GetBoolean(prefs::kAppLauncherHasBeenEnabled); 53#endif 54} 55 56bool ShouldShowAppLauncherPromo() { 57#if !defined(ENABLE_APP_LIST) 58 return false; 59#else 60 PrefService* local_state = g_browser_process->local_state(); 61 // In some tests, the prefs aren't initialised. 62 if (!local_state) 63 return false; 64 std::string app_launcher_promo_group_name = 65 base::FieldTrialList::FindFullName(kLauncherPromoTrialName); 66 return !IsAppLauncherEnabled() && 67 local_state->GetBoolean(prefs::kShowAppLauncherPromo) && 68 (app_launcher_promo_group_name == kShowLauncherPromoOnceGroupName || 69 app_launcher_promo_group_name == kResetShowLauncherPromoPrefGroupName); 70#endif 71} // namespace apps 72