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

Side by Side Diff: ash/system/cast/tray_cast.cc

Issue 1614233002: Shutdown the status tray before the system tray delegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Fix test failures Created 4 years, 11 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
« no previous file with comments | « ash/shell.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "ash/system/cast/tray_cast.h" 5 #include "ash/system/cast/tray_cast.h"
6 6
7 #include "ash/session/session_state_delegate.h" 7 #include "ash/session/session_state_delegate.h"
8 #include "ash/shelf/shelf_types.h" 8 #include "ash/shelf/shelf_types.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/system/chromeos/screen_security/screen_tray_item.h" 10 #include "ash/system/chromeos/screen_security/screen_tray_item.h"
(...skipping 24 matching lines...) Expand all
35 35
36 namespace ash { 36 namespace ash {
37 37
38 namespace { 38 namespace {
39 39
40 const int kMaximumStatusStringLength = 100; 40 const int kMaximumStatusStringLength = 100;
41 const int kStopButtonRightPadding = 18; 41 const int kStopButtonRightPadding = 18;
42 42
43 // Returns the active CastConfigDelegate instance. 43 // Returns the active CastConfigDelegate instance.
44 ash::CastConfigDelegate* GetCastConfigDelegate() { 44 ash::CastConfigDelegate* GetCastConfigDelegate() {
45 // When shutting down Chrome, there may not be a shell or a delegate instance.
46 if (!ash::Shell::GetInstance() ||
47 !ash::Shell::GetInstance()->system_tray_delegate()) {
48 return nullptr;
49 }
50
51 return ash::Shell::GetInstance() 45 return ash::Shell::GetInstance()
52 ->system_tray_delegate() 46 ->system_tray_delegate()
53 ->GetCastConfigDelegate(); 47 ->GetCastConfigDelegate();
54 } 48 }
55 49
56 // Helper method to elide the given string to the maximum length. If a string is 50 // Helper method to elide the given string to the maximum length. If a string is
57 // contains user-input and is displayed, we should elide it. 51 // contains user-input and is displayed, we should elide it.
58 // TODO(jdufault): This does not properly trim unicode characters. We should 52 // TODO(jdufault): This does not properly trim unicode characters. We should
59 // implement this properly by using views::Label::SetElideBehavior(...). See 53 // implement this properly by using views::Label::SetElideBehavior(...). See
60 // crbug.com/532496. 54 // crbug.com/532496.
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 } 547 }
554 } 548 }
555 549
556 } // namespace tray 550 } // namespace tray
557 551
558 TrayCast::TrayCast(SystemTray* system_tray) : SystemTrayItem(system_tray) { 552 TrayCast::TrayCast(SystemTray* system_tray) : SystemTrayItem(system_tray) {
559 Shell::GetInstance()->AddShellObserver(this); 553 Shell::GetInstance()->AddShellObserver(this);
560 } 554 }
561 555
562 TrayCast::~TrayCast() { 556 TrayCast::~TrayCast() {
563 // TODO(jdufault): Remove these if checks (and the ones in 557 Shell::GetInstance()->RemoveShellObserver(this);
564 // GetCastConfigDelegate) by fixing deinit order. See crbug.com/577413. 558 if (added_observer_)
565 if (Shell::GetInstance()) 559 GetCastConfigDelegate()->RemoveObserver(this);
566 Shell::GetInstance()->RemoveShellObserver(this);
567
568 ash::CastConfigDelegate* cast_config_delegate = GetCastConfigDelegate();
569 if (added_observer_ && cast_config_delegate)
570 cast_config_delegate->RemoveObserver(this);
571 } 560 }
572 561
573 void TrayCast::StartCastForTest(const std::string& receiver_id) { 562 void TrayCast::StartCastForTest(const std::string& receiver_id) {
574 if (detailed_ != nullptr) 563 if (detailed_ != nullptr)
575 detailed_->SimulateViewClickedForTest(receiver_id); 564 detailed_->SimulateViewClickedForTest(receiver_id);
576 } 565 }
577 566
578 void TrayCast::StopCastForTest() { 567 void TrayCast::StopCastForTest() {
579 default_->cast_view()->StopCasting(); 568 default_->cast_view()->StopCasting();
580 } 569 }
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 is_casting_ = started; 679 is_casting_ = started;
691 UpdatePrimaryView(); 680 UpdatePrimaryView();
692 } 681 }
693 682
694 void TrayCast::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { 683 void TrayCast::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
695 if (tray_) 684 if (tray_)
696 tray_->UpdateAlignment(alignment); 685 tray_->UpdateAlignment(alignment);
697 } 686 }
698 687
699 } // namespace ash 688 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shell.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698