1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/frame/browser_frame_ashwin.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/bind.h" 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/message_loop/message_loop.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/browser_shutdown.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/metro_utils/metro_chrome_win.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/aura/remote_window_tree_host_win.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)BrowserFrameAshWin::BrowserFrameAshWin(BrowserFrame* browser_frame, 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowserView* browser_view) 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : BrowserFrameAsh(browser_frame, browser_view) { 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)BrowserFrameAshWin::~BrowserFrameAshWin() { 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void BrowserFrameAshWin::OnWindowFocused(aura::Window* gained_focus, 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) aura::Window* lost_focus) { 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) BrowserFrameAsh::OnWindowFocused(gained_focus, lost_focus); 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (GetNativeWindow() != gained_focus) 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return; 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // TODO(shrikant): We need better way to handle chrome activation. 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // There may be cases where focus events do not follow a user 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // action to create or focus a window 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // If the activated window is in Metro mode, and the viewer process window is 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // not in the foreground, activate Metro Chrome. 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (aura::RemoteWindowTreeHostWin::IsValid() && 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) !aura::RemoteWindowTreeHostWin::Instance()->IsForegroundWindow() && 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) !browser_shutdown::IsTryingToQuit()) { 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // PostTask because ActivateMetroChrome can not be called nested in another 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // ::SendMessage(). 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::MessageLoop::current()->PostTask( 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FROM_HERE, 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::Bind(base::IgnoreResult(chrome::ActivateMetroChrome))); 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 43