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

Side by Side Diff: chromeos/dbus/power_manager_client.cc

Issue 2413163003: Revert of chromeos: Add VLOG(1)s around renderer-freezing for suspend. (Closed)
Patch Set: manual revert to resolve conflicts Created 4 years, 2 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 | « chrome/browser/chromeos/power/renderer_freezer.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 (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 "chromeos/dbus/power_manager_client.h" 5 #include "chromeos/dbus/power_manager_client.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 void RemoveObserver(Observer* observer) override { 82 void RemoveObserver(Observer* observer) override {
83 observers_.RemoveObserver(observer); 83 observers_.RemoveObserver(observer);
84 } 84 }
85 85
86 bool HasObserver(const Observer* observer) const override { 86 bool HasObserver(const Observer* observer) const override {
87 return observers_.HasObserver(observer); 87 return observers_.HasObserver(observer);
88 } 88 }
89 89
90 void SetRenderProcessManagerDelegate( 90 void SetRenderProcessManagerDelegate(
91 base::WeakPtr<RenderProcessManagerDelegate> delegate) override { 91 base::WeakPtr<RenderProcessManagerDelegate> delegate) override {
92 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
93 VLOG(1) << "Setting RenderProcessManagerDelegate to " << delegate.get();
94 VLOG(1) << "vtable is " << *reinterpret_cast<uintptr_t*>(delegate.get());
95 DCHECK(!render_process_manager_delegate_) 92 DCHECK(!render_process_manager_delegate_)
96 << "There can be only one! ...RenderProcessManagerDelegate"; 93 << "There can be only one! ...RenderProcessManagerDelegate";
97 render_process_manager_delegate_ = delegate; 94 render_process_manager_delegate_ = delegate;
98 } 95 }
99 96
100 void DecreaseScreenBrightness(bool allow_off) override { 97 void DecreaseScreenBrightness(bool allow_off) override {
101 dbus::MethodCall method_call( 98 dbus::MethodCall method_call(
102 power_manager::kPowerManagerInterface, 99 power_manager::kPowerManagerInterface,
103 power_manager::kDecreaseScreenBrightnessMethod); 100 power_manager::kDecreaseScreenBrightnessMethod);
104 dbus::MessageWriter writer(&method_call); 101 dbus::MessageWriter writer(&method_call);
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 } 518 }
522 519
523 dbus::MessageReader reader(signal); 520 dbus::MessageReader reader(signal);
524 power_manager::SuspendImminent proto; 521 power_manager::SuspendImminent proto;
525 if (!reader.PopArrayOfBytesAsProto(&proto)) { 522 if (!reader.PopArrayOfBytesAsProto(&proto)) {
526 POWER_LOG(ERROR) << "Unable to decode protocol buffer from " 523 POWER_LOG(ERROR) << "Unable to decode protocol buffer from "
527 << signal_name << " signal"; 524 << signal_name << " signal";
528 return; 525 return;
529 } 526 }
530 527
531 // TODO(derat): Switch back to POWER_LOG(EVENT) after 528 POWER_LOG(EVENT) << "Got " << signal_name
532 // http://crbug.com/648580 is fixed. 529 << " signal announcing suspend attempt "
533 VLOG(1) << "Got " << signal_name << " signal announcing suspend attempt " 530 << proto.suspend_id();
534 << proto.suspend_id();
535 531
536 // If a previous suspend is pending from the same state we are currently in 532 // If a previous suspend is pending from the same state we are currently in
537 // (fully powered on or in dark resume), then something's gone a little 533 // (fully powered on or in dark resume), then something's gone a little
538 // wonky. 534 // wonky.
539 if (suspend_is_pending_ && suspending_from_dark_resume_ == in_dark_resume) { 535 if (suspend_is_pending_ && suspending_from_dark_resume_ == in_dark_resume) {
540 POWER_LOG(ERROR) << "Got " << signal_name 536 POWER_LOG(ERROR) << "Got " << signal_name
541 << " signal about pending suspend attempt " 537 << " signal about pending suspend attempt "
542 << proto.suspend_id() 538 << proto.suspend_id()
543 << " while still waiting on attempt " 539 << " while still waiting on attempt "
544 << pending_suspend_id_; 540 << pending_suspend_id_;
(...skipping 23 matching lines...) Expand all
568 dbus::MessageReader reader(signal); 564 dbus::MessageReader reader(signal);
569 power_manager::SuspendDone proto; 565 power_manager::SuspendDone proto;
570 if (!reader.PopArrayOfBytesAsProto(&proto)) { 566 if (!reader.PopArrayOfBytesAsProto(&proto)) {
571 POWER_LOG(ERROR) << "Unable to decode protocol buffer from " 567 POWER_LOG(ERROR) << "Unable to decode protocol buffer from "
572 << power_manager::kSuspendDoneSignal << " signal"; 568 << power_manager::kSuspendDoneSignal << " signal";
573 return; 569 return;
574 } 570 }
575 571
576 const base::TimeDelta duration = 572 const base::TimeDelta duration =
577 base::TimeDelta::FromInternalValue(proto.suspend_duration()); 573 base::TimeDelta::FromInternalValue(proto.suspend_duration());
578 // TODO(derat): Switch back to POWER_LOG(EVENT) after 574 POWER_LOG(EVENT) << "Got " << power_manager::kSuspendDoneSignal
579 // http://crbug.com/648580 is fixed. 575 << " signal:"
580 VLOG(1) << "Got " << power_manager::kSuspendDoneSignal << " signal:" 576 << " suspend_id=" << proto.suspend_id()
581 << " suspend_id=" << proto.suspend_id() 577 << " duration=" << duration.InSeconds() << " sec";
582 << " duration=" << duration.InSeconds() << " sec";
583 578
584 // RenderProcessManagerDelegate is only notified that suspend is imminent 579 // RenderProcessManagerDelegate is only notified that suspend is imminent
585 // when readiness is being reported to powerd. If the suspend attempt was 580 // when readiness is being reported to powerd. If the suspend attempt was
586 // cancelled before then, we shouldn't notify the delegate about completion. 581 // cancelled before then, we shouldn't notify the delegate about completion.
587 const bool cancelled_while_regular_suspend_pending = 582 const bool cancelled_while_regular_suspend_pending =
588 suspend_is_pending_ && !suspending_from_dark_resume_; 583 suspend_is_pending_ && !suspending_from_dark_resume_;
589 // TODO(derat): Remove VLOG(1)s after http://crbug.com/648580 is fixed.
590 VLOG(1) << "RenderProcessManagerDelegate is "
591 << render_process_manager_delegate_.get() << "; suspend is"
592 << (suspend_is_pending_ ? "" : "n't") << " pending and was"
593 << (suspending_from_dark_resume_ ? "" : "n't")
594 << " suspending from dark resume";
595 if (render_process_manager_delegate_ && 584 if (render_process_manager_delegate_ &&
596 !cancelled_while_regular_suspend_pending) { 585 !cancelled_while_regular_suspend_pending)
597 VLOG(1) << "Calling RenderProcessManagerDelegate::SuspendDone()";
598 VLOG(1) << "vtable is "
599 << *reinterpret_cast<uintptr_t*>(
600 render_process_manager_delegate_.get());
601 render_process_manager_delegate_->SuspendDone(); 586 render_process_manager_delegate_->SuspendDone();
602 }
603 587
604 // powerd always pairs each SuspendImminent signal with SuspendDone before 588 // powerd always pairs each SuspendImminent signal with SuspendDone before
605 // starting the next suspend attempt, so we should no longer report 589 // starting the next suspend attempt, so we should no longer report
606 // readiness for any in-progress suspend attempts. 590 // readiness for any in-progress suspend attempts.
607 pending_suspend_id_ = -1; 591 pending_suspend_id_ = -1;
608 suspend_is_pending_ = false; 592 suspend_is_pending_ = false;
609 suspending_from_dark_resume_ = false; 593 suspending_from_dark_resume_ = false;
610 num_pending_suspend_readiness_callbacks_ = 0; 594 num_pending_suspend_readiness_callbacks_ = 0;
611 595
612 FOR_EACH_OBSERVER( 596 FOR_EACH_OBSERVER(
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 weak_ptr_factory_.GetWeakPtr(), true, 716 weak_ptr_factory_.GetWeakPtr(), true,
733 power_manager::kRegisterDarkSuspendDelayMethod)); 717 power_manager::kRegisterDarkSuspendDelayMethod));
734 } 718 }
735 719
736 // Records the fact that an observer has finished doing asynchronous work 720 // Records the fact that an observer has finished doing asynchronous work
737 // that was blocking a pending suspend attempt and possibly reports 721 // that was blocking a pending suspend attempt and possibly reports
738 // suspend readiness to powerd. Called by callbacks returned via 722 // suspend readiness to powerd. Called by callbacks returned via
739 // GetSuspendReadinessCallback(). 723 // GetSuspendReadinessCallback().
740 void HandleObserverSuspendReadiness(int32_t suspend_id, bool in_dark_resume) { 724 void HandleObserverSuspendReadiness(int32_t suspend_id, bool in_dark_resume) {
741 DCHECK(OnOriginThread()); 725 DCHECK(OnOriginThread());
742 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
743 VLOG(1) << "Got notification of observer readiness for "
744 << (in_dark_resume ? "dark" : "regular") << " suspend ID "
745 << suspend_id << " (pending " << pending_suspend_id_ << ")";
746 if (!suspend_is_pending_ || suspend_id != pending_suspend_id_ || 726 if (!suspend_is_pending_ || suspend_id != pending_suspend_id_ ||
747 in_dark_resume != suspending_from_dark_resume_) 727 in_dark_resume != suspending_from_dark_resume_)
748 return; 728 return;
749 729
750 num_pending_suspend_readiness_callbacks_--; 730 num_pending_suspend_readiness_callbacks_--;
751 MaybeReportSuspendReadiness(); 731 MaybeReportSuspendReadiness();
752 } 732 }
753 733
754 // Reports suspend readiness to powerd if no observers are still holding 734 // Reports suspend readiness to powerd if no observers are still holding
755 // suspend readiness callbacks. 735 // suspend readiness callbacks.
756 void MaybeReportSuspendReadiness() { 736 void MaybeReportSuspendReadiness() {
757 CHECK(suspend_is_pending_); 737 CHECK(suspend_is_pending_);
758 738
759 // Avoid reporting suspend readiness if some observers have yet to be 739 // Avoid reporting suspend readiness if some observers have yet to be
760 // notified about the pending attempt. 740 // notified about the pending attempt.
761 if (notifying_observers_about_suspend_imminent_) 741 if (notifying_observers_about_suspend_imminent_)
762 return; 742 return;
763 743
764 if (num_pending_suspend_readiness_callbacks_ > 0) { 744 if (num_pending_suspend_readiness_callbacks_ > 0)
765 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
766 VLOG(1) << "Not reporting suspend readiness; waiting for "
767 << num_pending_suspend_readiness_callbacks_ << " callback(s)";
768 return; 745 return;
769 }
770 746
771 std::string method_name; 747 std::string method_name;
772 int32_t delay_id = -1; 748 int32_t delay_id = -1;
773 if (suspending_from_dark_resume_) { 749 if (suspending_from_dark_resume_) {
774 method_name = power_manager::kHandleDarkSuspendReadinessMethod; 750 method_name = power_manager::kHandleDarkSuspendReadinessMethod;
775 delay_id = dark_suspend_delay_id_; 751 delay_id = dark_suspend_delay_id_;
776 } else { 752 } else {
777 method_name = power_manager::kHandleSuspendReadinessMethod; 753 method_name = power_manager::kHandleSuspendReadinessMethod;
778 delay_id = suspend_delay_id_; 754 delay_id = suspend_delay_id_;
779 } 755 }
780 756
781 // TODO(derat): Remove VLOG(1)s after http://crbug.com/648580 is fixed. 757 if (render_process_manager_delegate_ && !suspending_from_dark_resume_)
782 VLOG(1) << "RenderProcessManagerDelegate is "
783 << render_process_manager_delegate_.get() << "; "
784 << (suspending_from_dark_resume_ ? "" : "not ")
785 << "suspending from dark resume";
786 if (render_process_manager_delegate_ && !suspending_from_dark_resume_) {
787 VLOG(1) << "Calling RenderProcessManagerDelegate::SuspendImminent()";
788 VLOG(1) << "vtable is "
789 << *reinterpret_cast<uintptr_t*>(
790 render_process_manager_delegate_.get());
791 render_process_manager_delegate_->SuspendImminent(); 758 render_process_manager_delegate_->SuspendImminent();
792 }
793 759
794 dbus::MethodCall method_call( 760 dbus::MethodCall method_call(
795 power_manager::kPowerManagerInterface, method_name); 761 power_manager::kPowerManagerInterface, method_name);
796 dbus::MessageWriter writer(&method_call); 762 dbus::MessageWriter writer(&method_call);
797 763
798 // TODO(derat): Switch back to POWER_LOG(EVENT) after 764 POWER_LOG(EVENT) << "Announcing readiness of suspend delay " << delay_id
799 // http://crbug.com/648580 is fixed. 765 << " for suspend attempt " << pending_suspend_id_;
800 VLOG(1) << "Announcing readiness of suspend delay " << delay_id
801 << " for suspend attempt " << pending_suspend_id_;
802 power_manager::SuspendReadinessInfo protobuf_request; 766 power_manager::SuspendReadinessInfo protobuf_request;
803 protobuf_request.set_delay_id(delay_id); 767 protobuf_request.set_delay_id(delay_id);
804 protobuf_request.set_suspend_id(pending_suspend_id_); 768 protobuf_request.set_suspend_id(pending_suspend_id_);
805 769
806 pending_suspend_id_ = -1; 770 pending_suspend_id_ = -1;
807 suspend_is_pending_ = false; 771 suspend_is_pending_ = false;
808 772
809 if (!writer.AppendProtoAsArrayOfBytes(protobuf_request)) { 773 if (!writer.AppendProtoAsArrayOfBytes(protobuf_request)) {
810 POWER_LOG(ERROR) << "Error constructing message for " << method_name; 774 POWER_LOG(ERROR) << "Error constructing message for " << method_name;
811 return; 775 return;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 // static 838 // static
875 PowerManagerClient* PowerManagerClient::Create( 839 PowerManagerClient* PowerManagerClient::Create(
876 DBusClientImplementationType type) { 840 DBusClientImplementationType type) {
877 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 841 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
878 return new PowerManagerClientImpl(); 842 return new PowerManagerClientImpl();
879 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type); 843 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type);
880 return new FakePowerManagerClient(); 844 return new FakePowerManagerClient();
881 } 845 }
882 846
883 } // namespace chromeos 847 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/power/renderer_freezer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698