Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(871)

Unified Diff: chrome/browser/ui/app_list/app_list_shower.cc

Issue 225053004: Refactor views app list services to allow more code sharing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase+sim30 Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/app_list/app_list_shower.h ('k') | chrome/browser/ui/app_list/app_list_shower_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/app_list/app_list_shower.cc
diff --git a/chrome/browser/ui/app_list/app_list_shower.cc b/chrome/browser/ui/app_list/app_list_shower.cc
deleted file mode 100644
index d657c7c2bc906fc5ddb9aa6a5461d0a359db6c3c..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/app_list/app_list_shower.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2014 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 "base/bind.h"
-#include "base/message_loop/message_loop.h"
-#include "chrome/browser/ui/app_list/app_list_shower.h"
-#include "chrome/browser/ui/app_list/scoped_keep_alive.h"
-
-AppListShower::AppListShower(scoped_ptr<AppListFactory> factory,
- AppListService* service)
- : factory_(factory.Pass()),
- service_(service),
- profile_(NULL),
- can_close_app_list_(true) {
-}
-
-AppListShower::~AppListShower() {
-}
-
-void AppListShower::ShowForProfile(Profile* requested_profile) {
- // If the app list is already displaying |profile| just activate it (in case
- // we have lost focus).
- if (IsAppListVisible() && (requested_profile == profile_)) {
- app_list_->Show();
- return;
- }
-
- if (!app_list_) {
- CreateViewForProfile(requested_profile);
- } else if (requested_profile != profile_) {
- profile_ = requested_profile;
- app_list_->SetProfile(requested_profile);
- }
-
- keep_alive_.reset(new ScopedKeepAlive);
- if (!IsAppListVisible())
- app_list_->MoveNearCursor();
- app_list_->Show();
-}
-
-gfx::NativeWindow AppListShower::GetWindow() {
- if (!IsAppListVisible())
- return NULL;
- return app_list_->GetWindow();
-}
-
-void AppListShower::CreateViewForProfile(Profile* requested_profile) {
- profile_ = requested_profile;
- app_list_.reset(factory_->CreateAppList(
- profile_,
- service_,
- base::Bind(&AppListShower::DismissAppList, base::Unretained(this))));
-}
-
-void AppListShower::DismissAppList() {
- if (app_list_ && can_close_app_list_) {
- app_list_->Hide();
- keep_alive_.reset();
- }
-}
-
-void AppListShower::HandleViewBeingDestroyed() {
- app_list_.reset();
- profile_ = NULL;
- can_close_app_list_ = true;
-
- // We may end up here as the result of the OS deleting the AppList's
- // widget (WidgetObserver::OnWidgetDestroyed). If this happens and there
- // are no browsers around then deleting the keep alive will result in
- // deleting the Widget again (by way of CloseAllSecondaryWidgets). When
- // the stack unravels we end up back in the Widget that was deleted and
- // crash. By delaying deletion of the keep alive we ensure the Widget has
- // correctly been destroyed before ending the keep alive so that
- // CloseAllSecondaryWidgets() won't attempt to delete the AppList's Widget
- // again.
- if (base::MessageLoop::current()) { // NULL in tests.
- base::MessageLoop::current()->PostTask(
- FROM_HERE,
- base::Bind(&AppListShower::ResetKeepAlive, base::Unretained(this)));
- return;
- }
- keep_alive_.reset();
-}
-
-bool AppListShower::IsAppListVisible() const {
- return app_list_ && app_list_->IsVisible();
-}
-
-void AppListShower::WarmupForProfile(Profile* profile) {
- DCHECK(!profile_);
- CreateViewForProfile(profile);
- app_list_->Prerender();
-}
-
-bool AppListShower::HasView() const {
- return !!app_list_;
-}
-
-void AppListShower::ResetKeepAlive() {
- keep_alive_.reset();
-}
« no previous file with comments | « chrome/browser/ui/app_list/app_list_shower.h ('k') | chrome/browser/ui/app_list/app_list_shower_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698