| Index: chrome/browser/ui/views/app_list/win/app_list_service_win.cc
|
| diff --git a/chrome/browser/ui/views/app_list/win/app_list_service_win.cc b/chrome/browser/ui/views/app_list/win/app_list_service_win.cc
|
| deleted file mode 100644
|
| index ec14bed6252af90b3b8459bebc46dbb2682ebc7b..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/views/app_list/win/app_list_service_win.cc
|
| +++ /dev/null
|
| @@ -1,242 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/ui/views/app_list/win/app_list_service_win.h"
|
| -
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -#include <sstream>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/location.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/singleton.h"
|
| -#include "base/metrics/histogram.h"
|
| -#include "base/path_service.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/threading/sequenced_worker_pool.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "base/time/time.h"
|
| -#include "chrome/browser/browser_process.h"
|
| -#include "chrome/browser/browser_shutdown.h"
|
| -#include "chrome/browser/platform_util.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/profiles/profile_manager.h"
|
| -#include "chrome/browser/ui/app_list/app_list_util.h"
|
| -#include "chrome/browser/ui/views/app_list/win/activation_tracker_win.h"
|
| -#include "chrome/browser/ui/views/app_list/win/app_list_controller_delegate_win.h"
|
| -#include "chrome/browser/ui/views/app_list/win/app_list_win.h"
|
| -#include "chrome/common/channel_info.h"
|
| -#include "chrome/common/chrome_constants.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "chrome/installer/util/browser_distribution.h"
|
| -#include "components/prefs/pref_service.h"
|
| -#include "components/version_info/version_info.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/common/content_switches.h"
|
| -#include "ui/app_list/views/app_list_view.h"
|
| -#include "ui/base/ui_base_switches.h"
|
| -
|
| -#if defined(GOOGLE_CHROME_BUILD)
|
| -#include "chrome/installer/util/google_update_settings.h"
|
| -#include "chrome/installer/util/install_util.h"
|
| -#include "chrome/installer/util/updating_app_registration_data.h"
|
| -#include "chrome/installer/util/util_constants.h"
|
| -#endif // GOOGLE_CHROME_BUILD
|
| -
|
| -// static
|
| -AppListService* AppListService::Get() {
|
| - return AppListServiceWin::GetInstance();
|
| -}
|
| -
|
| -// static
|
| -void AppListService::InitAll(Profile* initial_profile,
|
| - const base::FilePath& profile_path) {
|
| - AppListServiceWin::GetInstance()->Init(initial_profile);
|
| -}
|
| -
|
| -namespace {
|
| -
|
| -const int kUnusedAppListNoWarmupDays = 28;
|
| -
|
| -#if defined(GOOGLE_CHROME_BUILD)
|
| -void SetDidRunForNDayActiveStats() {
|
| - DCHECK(content::BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread());
|
| - base::FilePath exe_path;
|
| - if (!PathService::Get(base::DIR_EXE, &exe_path)) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| - bool system_install = !InstallUtil::IsPerUserInstall(exe_path);
|
| - // Using Chrome Binary dist: Chrome dist may not exist for the legacy
|
| - // App Launcher, and App Launcher dist may be "shadow", which does not
|
| - // contain the information needed to determine multi-install.
|
| - // Edge case involving Canary: crbug/239163.
|
| - BrowserDistribution* chrome_binaries_dist =
|
| - BrowserDistribution::GetSpecificDistribution(
|
| - BrowserDistribution::CHROME_BINARIES);
|
| - if (chrome_binaries_dist &&
|
| - InstallUtil::IsMultiInstall(chrome_binaries_dist, system_install)) {
|
| - UpdatingAppRegistrationData app_launcher_reg_data(
|
| - installer::kAppLauncherGuid);
|
| - GoogleUpdateSettings::UpdateDidRunStateForApp(
|
| - app_launcher_reg_data, true /* did_run */);
|
| - }
|
| -}
|
| -#endif // GOOGLE_CHROME_BUILD
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -AppListServiceWin* AppListServiceWin::GetInstance() {
|
| - return base::Singleton<AppListServiceWin,
|
| - base::LeakySingletonTraits<AppListServiceWin>>::get();
|
| -}
|
| -
|
| -AppListServiceWin::AppListServiceWin()
|
| - : AppListServiceViews(std::unique_ptr<AppListControllerDelegate>(
|
| - new AppListControllerDelegateWin(this))) {}
|
| -
|
| -AppListServiceWin::~AppListServiceWin() {
|
| -}
|
| -
|
| -void AppListServiceWin::ShowForProfile(Profile* requested_profile) {
|
| - AppListServiceViews::ShowForProfile(requested_profile);
|
| -
|
| -#if defined(GOOGLE_CHROME_BUILD)
|
| - content::BrowserThread::PostBlockingPoolTask(
|
| - FROM_HERE, base::Bind(SetDidRunForNDayActiveStats));
|
| -#endif // GOOGLE_CHROME_BUILD
|
| -}
|
| -
|
| -void AppListServiceWin::OnLoadProfileForWarmup(Profile* initial_profile) {
|
| - // App list profiles should not be off-the-record.
|
| - DCHECK(!initial_profile->IsOffTheRecord());
|
| - DCHECK(!initial_profile->IsGuestSession());
|
| -
|
| - if (!IsWarmupNeeded())
|
| - return;
|
| -
|
| - base::Time before_warmup(base::Time::Now());
|
| - shower().WarmupForProfile(initial_profile);
|
| - UMA_HISTOGRAM_TIMES("Apps.AppListWarmupDuration",
|
| - base::Time::Now() - before_warmup);
|
| -}
|
| -
|
| -void AppListServiceWin::SetAppListNextPaintCallback(void (*callback)()) {
|
| - if (shower().app_list())
|
| - shower().app_list()->SetNextPaintCallback(base::Bind(callback));
|
| - else
|
| - next_paint_callback_ = base::Bind(callback);
|
| -}
|
| -
|
| -void AppListServiceWin::Init(Profile* initial_profile) {
|
| - ScheduleWarmup();
|
| - AppListServiceViews::Init(initial_profile);
|
| -}
|
| -
|
| -void AppListServiceWin::CreateShortcut() {
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void AppListServiceWin::ScheduleWarmup() {
|
| - // Post a task to create the app list. This is posted to not impact startup
|
| - // time.
|
| - /* const */ int kInitWindowDelay = 30;
|
| -
|
| - // TODO(vadimt): Make kInitWindowDelay const and remove the below switch once
|
| - // crbug.com/431326 is fixed.
|
| -
|
| - // Profiler UMA data is reported only for first 30 sec after browser startup.
|
| - // To make all invocations of AppListServiceWin::LoadProfileForWarmup visible
|
| - // to the server-side analysis tool, reducing this period to 10 sec in Dev
|
| - // builds and Canary, where profiler instrumentations are enabled.
|
| - switch (chrome::GetChannel()) {
|
| - case version_info::Channel::UNKNOWN:
|
| - case version_info::Channel::CANARY:
|
| - kInitWindowDelay = 10;
|
| - break;
|
| -
|
| - case version_info::Channel::DEV:
|
| - case version_info::Channel::BETA:
|
| - case version_info::Channel::STABLE:
|
| - // Except on Canary, don't bother scheduling an app launcher warmup when
|
| - // it's not already enabled. Always schedule on Canary while collecting
|
| - // profiler data (see comment above).
|
| - if (!IsAppLauncherEnabled())
|
| - return;
|
| -
|
| - // Profiler instrumentations are not enabled.
|
| - break;
|
| - }
|
| -
|
| - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
| - FROM_HERE, base::Bind(&AppListServiceWin::LoadProfileForWarmup,
|
| - base::Unretained(this)),
|
| - base::TimeDelta::FromSeconds(kInitWindowDelay));
|
| -}
|
| -
|
| -bool AppListServiceWin::IsWarmupNeeded() {
|
| - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| - if (!g_browser_process || g_browser_process->IsShuttingDown() ||
|
| - browser_shutdown::IsTryingToQuit() ||
|
| - command_line->HasSwitch(switches::kTestType)) {
|
| - return false;
|
| - }
|
| -
|
| - // Don't warm up the app list if it hasn't been used for a while. If the last
|
| - // launch is unknown, record it as "used" on the first warmup.
|
| - PrefService* local_state = g_browser_process->local_state();
|
| - int64_t last_launch_time_pref =
|
| - local_state->GetInt64(prefs::kAppListLastLaunchTime);
|
| - if (last_launch_time_pref == 0)
|
| - RecordAppListLastLaunch();
|
| -
|
| - base::Time last_launch_time =
|
| - base::Time::FromInternalValue(last_launch_time_pref);
|
| - if (base::Time::Now() - last_launch_time >
|
| - base::TimeDelta::FromDays(kUnusedAppListNoWarmupDays)) {
|
| - return false;
|
| - }
|
| -
|
| - // We only need to initialize the view if there's no view already created and
|
| - // there's no profile loading to be shown.
|
| - return !shower().HasView() && !profile_loader().IsAnyProfileLoading();
|
| -}
|
| -
|
| -void AppListServiceWin::LoadProfileForWarmup() {
|
| - if (!IsWarmupNeeded())
|
| - return;
|
| -
|
| - ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| - base::FilePath profile_path(GetProfilePath(profile_manager->user_data_dir()));
|
| -
|
| - profile_loader().LoadProfileInvalidatingOtherLoads(
|
| - profile_path,
|
| - base::Bind(&AppListServiceWin::OnLoadProfileForWarmup,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void AppListServiceWin::OnViewBeingDestroyed() {
|
| - activation_tracker_.reset();
|
| - AppListServiceViews::OnViewBeingDestroyed();
|
| -}
|
| -
|
| -void AppListServiceWin::OnViewCreated() {
|
| - if (!next_paint_callback_.is_null()) {
|
| - shower().app_list()->SetNextPaintCallback(next_paint_callback_);
|
| - next_paint_callback_.Reset();
|
| - }
|
| - activation_tracker_.reset(new ActivationTrackerWin(this));
|
| -}
|
| -
|
| -void AppListServiceWin::OnViewDismissed() {
|
| - activation_tracker_->OnViewHidden();
|
| -}
|
| -
|
| -void AppListServiceWin::MoveNearCursor(app_list::AppListView* view) {
|
| - AppListWin::MoveNearCursor(view);
|
| -}
|
|
|