Home | History | Annotate | Download | only in app_list
      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.
      4 
      5 #include "chrome/browser/ui/app_list/app_list_service_views.h"
      6 
      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"
     10 
     11 AppListServiceViews::AppListServiceViews(
     12     scoped_ptr<AppListControllerDelegate> controller_delegate)
     13     : shower_(this),
     14       can_dismiss_(true),
     15       controller_delegate_(controller_delegate.Pass()) {
     16 }
     17 
     18 AppListServiceViews::~AppListServiceViews() {}
     19 
     20 void AppListServiceViews::OnViewBeingDestroyed() {
     21   can_dismiss_ = true;
     22   shower_.HandleViewBeingDestroyed();
     23 }
     24 
     25 void AppListServiceViews::Init(Profile* initial_profile) {
     26   PerformStartupChecks(initial_profile);
     27 }
     28 
     29 void AppListServiceViews::CreateForProfile(Profile* requested_profile) {
     30   shower_.CreateViewForProfile(requested_profile);
     31 }
     32 
     33 void AppListServiceViews::ShowForProfile(Profile* requested_profile) {
     34   DCHECK(requested_profile);
     35 
     36   ScopedKeepAlive keep_alive;
     37 
     38   InvalidatePendingProfileLoads();
     39   SetProfilePath(requested_profile->GetPath());
     40   shower_.ShowForProfile(requested_profile);
     41   RecordAppListLaunch();
     42 }
     43 
     44 void AppListServiceViews::DismissAppList() {
     45   if (!can_dismiss_)
     46     return;
     47 
     48   shower_.DismissAppList();
     49 }
     50 
     51 bool AppListServiceViews::IsAppListVisible() const {
     52   return shower_.IsAppListVisible();
     53 }
     54 
     55 gfx::NativeWindow AppListServiceViews::GetAppListWindow() {
     56   return shower_.GetWindow();
     57 }
     58 
     59 Profile* AppListServiceViews::GetCurrentAppListProfile() {
     60   return shower_.profile();
     61 }
     62 
     63 AppListControllerDelegate* AppListServiceViews::GetControllerDelegate() {
     64   return controller_delegate_.get();
     65 }
     66 
     67 void AppListServiceViews::DestroyAppList() {
     68   if (!shower_.HasView())
     69     return;
     70 
     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());
     75 }
     76 
     77 AppListViewDelegate* AppListServiceViews::GetViewDelegateForCreate() {
     78   return GetViewDelegate(shower_.profile());
     79 }
     80