| Index: ash/display/display_manager.cc | 
| diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc | 
| index c407da47751977e3c47a3f80052cf4edbe76b058..8906c23cd8adf979899974c3cfbea3394a21eabe 100644 | 
| --- a/ash/display/display_manager.cc | 
| +++ b/ash/display/display_manager.cc | 
| @@ -118,7 +118,7 @@ DisplayManager::DisplayManager() | 
| force_bounds_changed_(false), | 
| change_display_upon_host_resize_(false), | 
| second_display_mode_(EXTENDED), | 
| -      mirrored_display_id_(gfx::Display::kInvalidDisplayID), | 
| +      mirroring_display_id_(gfx::Display::kInvalidDisplayID), | 
| registered_internal_display_rotation_lock_(false), | 
| registered_internal_display_rotation_(gfx::Display::ROTATE_0), | 
| weak_ptr_factory_(this) { | 
| @@ -240,7 +240,7 @@ DisplayIdPair DisplayManager::GetCurrentDisplayIdPair() const { | 
| // between two checks. | 
| CHECK_EQ(1u, displays_.size()); | 
| } | 
| -    return std::make_pair(displays_[0].id(), mirrored_display_id_); | 
| +    return std::make_pair(displays_[0].id(), mirroring_display_id_); | 
| } else { | 
| CHECK_LE(2u, displays_.size()); | 
| int64 id_at_zero = displays_[0].id(); | 
| @@ -607,7 +607,7 @@ void DisplayManager::OnNativeDisplaysChanged( | 
|  | 
| bool internal_display_connected = false; | 
| num_connected_displays_ = updated_displays.size(); | 
| -  mirrored_display_id_ = gfx::Display::kInvalidDisplayID; | 
| +  mirroring_display_id_ = gfx::Display::kInvalidDisplayID; | 
| mirroring_display_ = gfx::Display(); | 
| DisplayInfoList new_display_info_list; | 
| for (DisplayInfoList::const_iterator iter = updated_displays.begin(); | 
| @@ -619,7 +619,10 @@ void DisplayManager::OnNativeDisplaysChanged( | 
| gfx::Point origin = iter->bounds_in_native().origin(); | 
| if (origins.find(origin) != origins.end()) { | 
| InsertAndUpdateDisplayInfo(*iter); | 
| -      mirrored_display_id_ = iter->id(); | 
| +      mirroring_display_id_ = iter->id(); | 
| +      mirroring_display_ = | 
| +          CreateDisplayFromDisplayInfoById(mirroring_display_id_); | 
| +      mirroring_display_.set_mirrored_display_id(new_display_info_list[0].id()); | 
| } else { | 
| origins.insert(origin); | 
| new_display_info_list.push_back(*iter); | 
| @@ -693,31 +696,34 @@ void DisplayManager::UpdateDisplays( | 
| // the root window so that it matches the external display's | 
| // resolution. This is necessary in order for scaling to work while | 
| // mirrored. | 
| -  int64 mirroing_display_id = gfx::Display::kInvalidDisplayID; | 
| +  int64 mirrored_display_id = gfx::Display::kInvalidDisplayID; | 
| +  int64 mirroring_display_id = gfx::Display::kInvalidDisplayID; | 
|  | 
| if (second_display_mode_ != EXTENDED && new_display_info_list.size() == 2) { | 
| bool zero_is_source = | 
| first_display_id_ == new_display_info_list[0].id() || | 
| gfx::Display::InternalDisplayId() == new_display_info_list[0].id(); | 
| DCHECK_EQ(MIRRORING, second_display_mode_); | 
| -    mirrored_display_id_ = new_display_info_list[zero_is_source ? 1 : 0].id(); | 
| -    mirroing_display_id = mirrored_display_id_; | 
| +    mirrored_display_id = new_display_info_list[zero_is_source ? 0 : 1].id(); | 
| +    mirroring_display_id = new_display_info_list[zero_is_source ? 1 : 0].id(); | 
| +    mirroring_display_id_ = mirroring_display_id; | 
| } | 
|  | 
| while (curr_iter != displays_.end() || | 
| new_info_iter != new_display_info_list.end()) { | 
| if (new_info_iter != new_display_info_list.end() && | 
| -        mirroing_display_id == new_info_iter->id()) { | 
| +        mirroring_display_id == new_info_iter->id()) { | 
| DisplayInfo info = *new_info_iter; | 
| info.SetOverscanInsets(gfx::Insets()); | 
| InsertAndUpdateDisplayInfo(info); | 
| mirroring_display_ = | 
| -          CreateDisplayFromDisplayInfoById(mirroing_display_id); | 
| +          CreateDisplayFromDisplayInfoById(mirroring_display_id); | 
| +      mirroring_display_.set_mirrored_display_id(mirrored_display_id); | 
| ++new_info_iter; | 
| // Remove existing external display if it is going to be used as | 
| // mirroring display. | 
| if (curr_iter != displays_.end() && | 
| -          curr_iter->id() == mirroing_display_id) { | 
| +          curr_iter->id() == mirroring_display_id) { | 
| removed_displays.push_back(*curr_iter); | 
| ++curr_iter; | 
| } | 
| @@ -933,7 +939,7 @@ size_t DisplayManager::GetNumDisplays() const { | 
| } | 
|  | 
| bool DisplayManager::IsMirrored() const { | 
| -  return mirrored_display_id_ != gfx::Display::kInvalidDisplayID; | 
| +  return mirroring_display_id_ != gfx::Display::kInvalidDisplayID; | 
| } | 
|  | 
| const DisplayInfo& DisplayManager::GetDisplayInfo(int64 display_id) const { | 
| @@ -1010,7 +1016,7 @@ void DisplayManager::AddRemoveDisplay() { | 
| "%d+%d-500x400", host_bounds.x(), host_bounds.bottom()))); | 
| } | 
| num_connected_displays_ = new_display_info_list.size(); | 
| -  mirrored_display_id_ = gfx::Display::kInvalidDisplayID; | 
| +  mirroring_display_id_ = gfx::Display::kInvalidDisplayID; | 
| mirroring_display_ = gfx::Display(); | 
| UpdateDisplays(new_display_info_list); | 
| } | 
| @@ -1041,7 +1047,7 @@ bool DisplayManager::SoftwareMirroringEnabled() const { | 
|  | 
| void DisplayManager::SetSecondDisplayMode(SecondDisplayMode mode) { | 
| second_display_mode_ = mode; | 
| -  mirrored_display_id_ = gfx::Display::kInvalidDisplayID; | 
| +  mirroring_display_id_ = gfx::Display::kInvalidDisplayID; | 
| mirroring_display_ = gfx::Display(); | 
| } | 
|  | 
| @@ -1050,7 +1056,7 @@ bool DisplayManager::UpdateDisplayBounds(int64 display_id, | 
| if (change_display_upon_host_resize_) { | 
| display_info_[display_id].SetBounds(new_bounds); | 
| // Don't notify observers if the mirrored window has changed. | 
| -    if (software_mirroring_enabled() && mirrored_display_id_ == display_id) | 
| +    if (software_mirroring_enabled() && mirroring_display_id_ == display_id) | 
| return false; | 
| gfx::Display* display = FindDisplayForId(display_id); | 
| display->SetSize(display_info_[display_id].size_in_pixel()); | 
| @@ -1095,6 +1101,10 @@ gfx::Display* DisplayManager::FindDisplayForId(int64 id) { | 
| if ((*iter).id() == id) | 
| return &(*iter); | 
| } | 
| + | 
| +  if (id == mirroring_display_id_) | 
| +    return &mirroring_display_; | 
| + | 
| DLOG(WARNING) << "Could not find display:" << id; | 
| return NULL; | 
| } | 
| @@ -1102,7 +1112,7 @@ gfx::Display* DisplayManager::FindDisplayForId(int64 id) { | 
| void DisplayManager::AddMirrorDisplayInfoIfAny( | 
| std::vector<DisplayInfo>* display_info_list) { | 
| if (software_mirroring_enabled() && IsMirrored()) | 
| -    display_info_list->push_back(GetDisplayInfo(mirrored_display_id_)); | 
| +    display_info_list->push_back(GetDisplayInfo(mirroring_display_id_)); | 
| } | 
|  | 
| void DisplayManager::InsertAndUpdateDisplayInfo(const DisplayInfo& new_info) { | 
|  |