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

Side by Side Diff: chrome/browser/ui/ash/chrome_shell_delegate.cc

Issue 2791463002: mash: Remove ShelfDelegate; move functions to ShelfModel. (Closed)
Patch Set: Address comment. Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/ash/chrome_shell_delegate.h" 5 #include "chrome/browser/ui/ash/chrome_shell_delegate.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <limits> 9 #include <limits>
10 10
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 manager->Enable(context); 382 manager->Enable(context);
383 else 383 else
384 manager->Disable(); 384 manager->Disable();
385 } 385 }
386 386
387 DISALLOW_COPY_AND_ASSIGN(AccessibilityDelegateImpl); 387 DISALLOW_COPY_AND_ASSIGN(AccessibilityDelegateImpl);
388 }; 388 };
389 389
390 } // namespace 390 } // namespace
391 391
392 ChromeShellDelegate::ChromeShellDelegate() 392 ChromeShellDelegate::ChromeShellDelegate() {
393 : shelf_delegate_(NULL) {
394 PlatformInit(); 393 PlatformInit();
395 } 394 }
396 395
397 ChromeShellDelegate::~ChromeShellDelegate() { 396 ChromeShellDelegate::~ChromeShellDelegate() {}
398 }
399 397
400 service_manager::Connector* ChromeShellDelegate::GetShellConnector() const { 398 service_manager::Connector* ChromeShellDelegate::GetShellConnector() const {
401 return content::ServiceManagerConnection::GetForProcess()->GetConnector(); 399 return content::ServiceManagerConnection::GetForProcess()->GetConnector();
402 } 400 }
403 401
404 bool ChromeShellDelegate::IsMultiProfilesEnabled() const { 402 bool ChromeShellDelegate::IsMultiProfilesEnabled() const {
405 if (!profiles::IsMultipleProfilesEnabled()) 403 if (!profiles::IsMultipleProfilesEnabled())
406 return false; 404 return false;
407 // If there is a user manager, we need to see that we can at least have 2 405 // If there is a user manager, we need to see that we can at least have 2
408 // simultaneous users to allow this feature. 406 // simultaneous users to allow this feature.
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 displayer.browser(), url_to_open, 490 displayer.browser(), url_to_open,
493 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | 491 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
494 ui::PAGE_TRANSITION_FROM_API)); 492 ui::PAGE_TRANSITION_FROM_API));
495 493
496 // Since the ScopedTabbedBrowserDisplayer does not guarantee that the 494 // Since the ScopedTabbedBrowserDisplayer does not guarantee that the
497 // browser will be shown on the active desktop, we ensure the visibility. 495 // browser will be shown on the active desktop, we ensure the visibility.
498 multi_user_util::MoveWindowToCurrentDesktop( 496 multi_user_util::MoveWindowToCurrentDesktop(
499 displayer.browser()->window()->GetNativeWindow()); 497 displayer.browser()->window()->GetNativeWindow());
500 } 498 }
501 499
502 ash::ShelfDelegate* ChromeShellDelegate::CreateShelfDelegate( 500 void ChromeShellDelegate::ShelfInit() {
503 ash::ShelfModel* model) { 501 if (!launcher_controller_) {
504 if (!shelf_delegate_) { 502 launcher_controller_ = base::MakeUnique<ChromeLauncherControllerImpl>(
505 shelf_delegate_ = new ChromeLauncherControllerImpl(nullptr, model); 503 nullptr, ash::Shell::Get()->shelf_model());
506 shelf_delegate_->Init(); 504 launcher_controller_->Init();
507 } 505 }
508 return shelf_delegate_; 506 }
507
508 void ChromeShellDelegate::ShelfShutdown() {
509 launcher_controller_.reset();
509 } 510 }
510 511
511 ui::MenuModel* ChromeShellDelegate::CreateContextMenu( 512 ui::MenuModel* ChromeShellDelegate::CreateContextMenu(
512 ash::WmShelf* wm_shelf, 513 ash::WmShelf* wm_shelf,
513 const ash::ShelfItem* item) { 514 const ash::ShelfItem* item) {
514 // Don't show context menu for exclusive app runtime mode. 515 // Don't show context menu for exclusive app runtime mode.
515 if (chrome::IsRunningInAppMode()) 516 if (chrome::IsRunningInAppMode())
516 return nullptr; 517 return nullptr;
517 518
518 // No context menu before |shelf_delegate_| is created. This is possible 519 // No context menu before |launcher_controller_| is created. This is possible
519 // now because CreateShelfDelegate is called by session state change 520 // now because ShelfInit() is called by session state change via mojo
520 // via mojo asynchronously. Context menu could be triggered when the 521 // asynchronously. Context menu could be triggered when the mojo message is
521 // mojo message is still in-fly and crashes. 522 // still in-fly and crashes.
522 if (!shelf_delegate_) 523 if (!launcher_controller_)
523 return nullptr; 524 return nullptr;
524 525
525 return LauncherContextMenu::Create(shelf_delegate_, item, wm_shelf); 526 return LauncherContextMenu::Create(launcher_controller_.get(), item,
527 wm_shelf);
526 } 528 }
527 529
528 ash::GPUSupport* ChromeShellDelegate::CreateGPUSupport() { 530 ash::GPUSupport* ChromeShellDelegate::CreateGPUSupport() {
529 // Chrome uses real GPU support. 531 // Chrome uses real GPU support.
530 return new ash::GPUSupportImpl; 532 return new ash::GPUSupportImpl;
531 } 533 }
532 534
533 base::string16 ChromeShellDelegate::GetProductName() const { 535 base::string16 ChromeShellDelegate::GetProductName() const {
534 return l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); 536 return l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);
535 } 537 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 Profile* profile = content::Details<Profile>(details).ptr(); 613 Profile* profile = content::Details<Profile>(details).ptr();
612 if (!chromeos::ProfileHelper::IsSigninProfile(profile) && 614 if (!chromeos::ProfileHelper::IsSigninProfile(profile) &&
613 !profile->IsGuestSession() && !profile->IsSupervised()) { 615 !profile->IsGuestSession() && !profile->IsSupervised()) {
614 // Start the error notifier services to show auth/sync notifications. 616 // Start the error notifier services to show auth/sync notifications.
615 SigninErrorNotifierFactory::GetForProfile(profile); 617 SigninErrorNotifierFactory::GetForProfile(profile);
616 SyncErrorNotifierFactory::GetForProfile(profile); 618 SyncErrorNotifierFactory::GetForProfile(profile);
617 } 619 }
618 // Do not use chrome::NOTIFICATION_PROFILE_ADDED because the 620 // Do not use chrome::NOTIFICATION_PROFILE_ADDED because the
619 // profile is not fully initialized by user_manager. Use 621 // profile is not fully initialized by user_manager. Use
620 // chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED instead. 622 // chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED instead.
621 if (shelf_delegate_) 623 if (launcher_controller_)
622 shelf_delegate_->OnUserProfileReadyToSwitch(profile); 624 launcher_controller_->OnUserProfileReadyToSwitch(profile);
623 break; 625 break;
624 } 626 }
625 case chrome::NOTIFICATION_SESSION_STARTED: 627 case chrome::NOTIFICATION_SESSION_STARTED:
626 // InitAfterFirstSessionStart() should only be called once upon system 628 // InitAfterFirstSessionStart() should only be called once upon system
627 // start. 629 // start.
628 if (user_manager::UserManager::Get()->GetLoggedInUsers().size() < 2) 630 if (user_manager::UserManager::Get()->GetLoggedInUsers().size() < 2)
629 InitAfterFirstSessionStart(); 631 InitAfterFirstSessionStart();
630 break; 632 break;
631 default: 633 default:
632 NOTREACHED() << "Unexpected notification " << type; 634 NOTREACHED() << "Unexpected notification " << type;
633 } 635 }
634 } 636 }
635 637
636 void ChromeShellDelegate::PlatformInit() { 638 void ChromeShellDelegate::PlatformInit() {
637 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, 639 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
638 content::NotificationService::AllSources()); 640 content::NotificationService::AllSources());
639 registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED, 641 registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
640 content::NotificationService::AllSources()); 642 content::NotificationService::AllSources());
641 } 643 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/ash/chrome_shell_delegate.h ('k') | chrome/browser/ui/ash/launcher/arc_app_launcher_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698