| Index: chromeos/audio/cras_audio_handler.h | 
| diff --git a/chromeos/audio/cras_audio_handler.h b/chromeos/audio/cras_audio_handler.h | 
| index c9110718e4a332a7bc0dde2b5a02d446857a8e2f..fbc8114ea3c0691960c34a4464996f24b62beebd 100644 | 
| --- a/chromeos/audio/cras_audio_handler.h | 
| +++ b/chromeos/audio/cras_audio_handler.h | 
| @@ -38,6 +38,15 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer, | 
| AudioDeviceCompare> AudioDevicePriorityQueue; | 
| typedef std::vector<uint64_t> NodeIdList; | 
|  | 
| +  // Volume change reasons that are not user-initiated. | 
| +  enum AutomatedVolumeChangeReason { | 
| +    // Indicates it is from initializing audio state. | 
| +    VOLUME_CHANGE_INITIALIZING_AUDIO_STATE, | 
| + | 
| +    // Indicates it is from restoring volume in maximimize mode screenshot. | 
| +    VOLUME_CHANGE_MAXIMIZE_MODE_SCREENSHOT, | 
| +  }; | 
| + | 
| class AudioObserver { | 
| public: | 
| // Called when an active output volume changed. | 
| @@ -155,10 +164,16 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer, | 
| virtual bool has_alternative_input() const; | 
| virtual bool has_alternative_output() const; | 
|  | 
| -  // Sets all active output devices' volume level to |volume_percent|, whose | 
| +  // Sets all active output devices' volume levels to |volume_percent|, whose | 
| // range is from 0-100%. | 
| virtual void SetOutputVolumePercent(int volume_percent); | 
|  | 
| +  // Sets all active output devices' volume levels to |volume_percent|, whose | 
| +  // range is from 0-100%, without notifying observers. | 
| +  virtual void SetOutputVolumePercentWithoutNotifyingObservers( | 
| +      int volume_percent, | 
| +      AutomatedVolumeChangeReason reason); | 
| + | 
| // Sets all active input devices' gain level to |gain_percent|, whose range is | 
| // from 0-100%. | 
| virtual void SetInputGainPercent(int gain_percent); | 
| @@ -432,10 +447,15 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer, | 
|  | 
| bool cras_service_available_ = false; | 
|  | 
| +  // FIFO list of reasons passed to | 
| +  // SetOutputVolumePercentWithoutNotifyingObservers() for which we're still | 
| +  // waiting for OutputNodeVolumeChanged() calls. These are used to suppress | 
| +  // notifications for those changes. | 
| +  std::deque<AutomatedVolumeChangeReason> automated_volume_change_reasons_; | 
| + | 
| bool initializing_audio_state_ = false; | 
| int init_volume_; | 
| uint64_t init_node_id_; | 
| -  int init_volume_count_ = 0; | 
|  | 
| base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_; | 
|  | 
|  |