Adding instrumentation to locate the source of jankiness
[chromium-blink-merge.git] / chrome / browser / ui / app_list / app_list_service_views.cc
blob6be5abe7a180a0d65c31724fc14b673eac8f3b4b
1 // Copyright 2014 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.
5 #include "chrome/browser/ui/app_list/app_list_service_views.h"
7 #include "chrome/browser/apps/scoped_keep_alive.h"
8 #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
9 #include "ui/app_list/views/app_list_view.h"
11 AppListServiceViews::AppListServiceViews(
12 scoped_ptr<AppListControllerDelegate> controller_delegate)
13 : shower_(this),
14 can_dismiss_(true),
15 controller_delegate_(controller_delegate.Pass()) {
18 AppListServiceViews::~AppListServiceViews() {}
20 void AppListServiceViews::OnViewBeingDestroyed() {
21 can_dismiss_ = true;
22 shower_.HandleViewBeingDestroyed();
25 void AppListServiceViews::Init(Profile* initial_profile) {
26 PerformStartupChecks(initial_profile);
29 void AppListServiceViews::ShowForProfile(Profile* requested_profile) {
30 DCHECK(requested_profile);
32 ScopedKeepAlive keep_alive;
34 InvalidatePendingProfileLoads();
35 SetProfilePath(requested_profile->GetPath());
36 shower_.ShowForProfile(requested_profile);
37 RecordAppListLaunch();
40 void AppListServiceViews::DismissAppList() {
41 if (!can_dismiss_)
42 return;
44 shower_.DismissAppList();
47 bool AppListServiceViews::IsAppListVisible() const {
48 return shower_.IsAppListVisible();
51 gfx::NativeWindow AppListServiceViews::GetAppListWindow() {
52 return shower_.GetWindow();
55 Profile* AppListServiceViews::GetCurrentAppListProfile() {
56 return shower_.profile();
59 AppListControllerDelegate* AppListServiceViews::GetControllerDelegate() {
60 return controller_delegate_.get();
63 void AppListServiceViews::CreateForProfile(Profile* requested_profile) {
64 shower_.CreateViewForProfile(requested_profile);
67 void AppListServiceViews::DestroyAppList() {
68 if (!shower_.HasView())
69 return;
71 // Use CloseNow(). This can't be asynchronous because the profile will be
72 // deleted once this function returns.
73 shower_.app_list()->GetWidget()->CloseNow();
74 DCHECK(!shower_.HasView());
77 AppListViewDelegate* AppListServiceViews::GetViewDelegateForCreate() {
78 return GetViewDelegate(shower_.profile());