Index: content/browser/renderer_host/render_widget_host_view_aura.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc |
index a0c54fa90f4e5b200154a4163eaf152026dca4de..fe5ef1e07503ff64a732c1a75f800c358894106f 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc |
@@ -37,6 +37,7 @@ |
#include "ui/aura/root_window.h" |
#include "ui/aura/window.h" |
#include "ui/aura/window_observer.h" |
+#include "ui/aura/window_tracker.h" |
#include "ui/base/clipboard/scoped_clipboard_writer.h" |
#include "ui/base/events/event.h" |
#include "ui/base/gestures/gesture_recognizer.h" |
@@ -153,7 +154,7 @@ class RenderWidgetHostViewAura::WindowObserver : public aura::WindowObserver { |
explicit WindowObserver(RenderWidgetHostViewAura* view) : view_(view) {} |
virtual ~WindowObserver() {} |
- // Overridden from aura::WindowObserver: |
+ // Overridden from aura::WindowObserver: |
virtual void OnWindowRemovingFromRootWindow(aura::Window* window) OVERRIDE { |
view_->RemovingFromRootWindow(); |
} |
@@ -283,6 +284,10 @@ void RenderWidgetHostViewAura::InitAsFullscreen( |
if (reference_host_view) { |
aura::Window* reference_window = |
static_cast<RenderWidgetHostViewAura*>(reference_host_view)->window_; |
+ if (reference_window) { |
+ host_tracker_.reset(new aura::WindowTracker); |
+ host_tracker_->Add(reference_window); |
+ } |
gfx::Display display = |
gfx::Screen::GetDisplayNearestWindow(reference_window); |
aura::client::StackingClient* stacking_client = |
@@ -1355,6 +1360,12 @@ ui::EventResult RenderWidgetHostViewAura::OnKeyEvent(ui::KeyEvent* event) { |
// We need to handle the Escape key for Pepper Flash. |
if (is_fullscreen_ && event->key_code() == ui::VKEY_ESCAPE) { |
+ // Focus the window we were created from. |
+ if (host_tracker_.get() && !host_tracker_->windows().empty()) { |
+ aura::Window* host = *(host_tracker_->windows().begin()); |
+ if (host->GetFocusManager()) |
+ host->Focus(); |
+ } |
if (!in_shutdown_) { |
in_shutdown_ = true; |
host_->Shutdown(); |