| Index: chrome/browser/views/frame/browser_frame.cc
 | 
| ===================================================================
 | 
| --- chrome/browser/views/frame/browser_frame.cc	(revision 10646)
 | 
| +++ chrome/browser/views/frame/browser_frame.cc	(working copy)
 | 
| @@ -2,47 +2,41 @@
 | 
|  // Use of this source code is governed by a BSD-style license that can be
 | 
|  // found in the LICENSE file.
 | 
|  
 | 
| -#include "chrome/browser/views/frame/aero_glass_frame.h"
 | 
| +#include "chrome/browser/views/frame/browser_frame.h"
 | 
|  
 | 
|  #include <dwmapi.h>
 | 
|  
 | 
|  #include "chrome/browser/browser_list.h"
 | 
|  #include "chrome/browser/views/frame/browser_view.h"
 | 
| -#include "chrome/browser/views/frame/aero_glass_non_client_view.h"
 | 
| +#include "chrome/browser/views/frame/glass_browser_frame_view.h"
 | 
| +#include "chrome/browser/views/frame/opaque_browser_frame_view.h"
 | 
|  #include "chrome/common/resource_bundle.h"
 | 
| +#include "chrome/common/win_util.h"
 | 
|  #include "chrome/views/window_delegate.h"
 | 
|  #include "grit/theme_resources.h"
 | 
|  
 | 
|  // static
 | 
| -
 | 
|  static const int kClientEdgeThickness = 3;
 | 
|  
 | 
| -HICON AeroGlassFrame::throbber_icons_[AeroGlassFrame::kThrobberIconCount];
 | 
| -
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
| -// AeroGlassFrame, public:
 | 
| +// BrowserFrame, public:
 | 
|  
 | 
| -AeroGlassFrame::AeroGlassFrame(BrowserView* browser_view)
 | 
| +BrowserFrame::BrowserFrame(BrowserView* browser_view)
 | 
|      : Window(browser_view),
 | 
|        browser_view_(browser_view),
 | 
| -      frame_initialized_(false),
 | 
| -      throbber_running_(false),
 | 
| -      throbber_frame_(0) {
 | 
| -  non_client_view_ = new AeroGlassNonClientView(this, browser_view);
 | 
| +      frame_initialized_(false) {
 | 
|    browser_view_->set_frame(this);
 | 
| -
 | 
| -  if (window_delegate()->ShouldShowWindowIcon())
 | 
| -    InitThrobberIcons();
 | 
| +  non_client_view_->SetFrameView(CreateFrameViewForWindow());
 | 
|  }
 | 
|  
 | 
| -AeroGlassFrame::~AeroGlassFrame() {
 | 
| +BrowserFrame::~BrowserFrame() {
 | 
|  }
 | 
|  
 | 
| -void AeroGlassFrame::Init() {
 | 
| +void BrowserFrame::Init() {
 | 
|    Window::Init(NULL, gfx::Rect());
 | 
|  }
 | 
|  
 | 
| -int AeroGlassFrame::GetMinimizeButtonOffset() const {
 | 
| +int BrowserFrame::GetMinimizeButtonOffset() const {
 | 
|    TITLEBARINFOEX titlebar_info;
 | 
|    titlebar_info.cbSize = sizeof(TITLEBARINFOEX);
 | 
|    SendMessage(GetHWND(), WM_GETTITLEBARINFOEX, 0, (WPARAM)&titlebar_info);
 | 
| @@ -54,84 +48,59 @@
 | 
|    return minimize_button_corner.x;
 | 
|  }
 | 
|  
 | 
| -///////////////////////////////////////////////////////////////////////////////
 | 
| -// AeroGlassFrame, BrowserFrame implementation:
 | 
| -
 | 
| -gfx::Rect AeroGlassFrame::GetWindowBoundsForClientBounds(
 | 
| -    const gfx::Rect& client_bounds) {
 | 
| -  RECT rect = client_bounds.ToRECT();
 | 
| -  AdjustWindowRectEx(&rect, window_style(), FALSE, window_ex_style());
 | 
| -  return gfx::Rect(rect);
 | 
| +gfx::Rect BrowserFrame::GetBoundsForTabStrip(TabStrip* tabstrip) const {
 | 
| +  return browser_frame_view_->GetBoundsForTabStrip(tabstrip);
 | 
|  }
 | 
|  
 | 
| -gfx::Rect AeroGlassFrame::GetBoundsForTabStrip(TabStrip* tabstrip) const {
 | 
| -  return GetAeroGlassNonClientView()->GetBoundsForTabStrip(tabstrip);
 | 
| +void BrowserFrame::UpdateThrobber(bool running) {
 | 
| +  browser_frame_view_->UpdateThrobber(running);
 | 
|  }
 | 
|  
 | 
| -void AeroGlassFrame::UpdateThrobber(bool running) {
 | 
| -  if (throbber_running_) {
 | 
| -    if (running) {
 | 
| -      DisplayNextThrobberFrame();
 | 
| -    } else {
 | 
| -      StopThrobber();
 | 
| -    }
 | 
| -  } else if (running) {
 | 
| -    StartThrobber();
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -views::Window* AeroGlassFrame::GetWindow() {
 | 
| -  return this;
 | 
| -}
 | 
| -
 | 
| -const views::Window* AeroGlassFrame::GetWindow() const {
 | 
| -  return this;
 | 
| -}
 | 
| -
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
| -// AeroGlassFrame, views::WidgetWin overrides:
 | 
| +// BrowserFrame, views::WidgetWin overrides:
 | 
|  
 | 
| -bool AeroGlassFrame::AcceleratorPressed(views::Accelerator* accelerator) {
 | 
| +bool BrowserFrame::AcceleratorPressed(views::Accelerator* accelerator) {
 | 
|    return browser_view_->AcceleratorPressed(*accelerator);
 | 
|  }
 | 
|  
 | 
| -bool AeroGlassFrame::GetAccelerator(int cmd_id,
 | 
| -                                    views::Accelerator* accelerator) {
 | 
| +bool BrowserFrame::GetAccelerator(int cmd_id, views::Accelerator* accelerator) {
 | 
|    return browser_view_->GetAccelerator(cmd_id, accelerator);
 | 
|  }
 | 
|  
 | 
| -void AeroGlassFrame::OnInitMenuPopup(HMENU menu, UINT position,
 | 
| -                                     BOOL is_system_menu) {
 | 
| -  browser_view_->PrepareToRunSystemMenu(menu);
 | 
| +void BrowserFrame::OnEndSession(BOOL ending, UINT logoff) {
 | 
| +  BrowserList::WindowsSessionEnding();
 | 
|  }
 | 
|  
 | 
| -void AeroGlassFrame::OnEnterSizeMove() {
 | 
| +void BrowserFrame::OnEnterSizeMove() {
 | 
|    browser_view_->WindowMoveOrResizeStarted();
 | 
|  }
 | 
|  
 | 
| -void AeroGlassFrame::OnEndSession(BOOL ending, UINT logoff) {
 | 
| -  BrowserList::WindowsSessionEnding();
 | 
| +void BrowserFrame::OnInitMenuPopup(HMENU menu, UINT position,
 | 
| +                                     BOOL is_system_menu) {
 | 
| +  browser_view_->PrepareToRunSystemMenu(menu);
 | 
|  }
 | 
|  
 | 
| -LRESULT AeroGlassFrame::OnMouseActivate(HWND window, UINT hittest_code,
 | 
| +LRESULT BrowserFrame::OnMouseActivate(HWND window, UINT hittest_code,
 | 
|                                          UINT message) {
 | 
|    return browser_view_->ActivateAppModalDialog() ? MA_NOACTIVATEANDEAT
 | 
|                                                   : MA_ACTIVATE;
 | 
|  }
 | 
|  
 | 
| -void AeroGlassFrame::OnMove(const CPoint& point) {
 | 
| +void BrowserFrame::OnMove(const CPoint& point) {
 | 
|    browser_view_->WindowMoved();
 | 
|  }
 | 
|  
 | 
| -void AeroGlassFrame::OnMoving(UINT param, const RECT* new_bounds) {
 | 
| +void BrowserFrame::OnMoving(UINT param, const RECT* new_bounds) {
 | 
|    browser_view_->WindowMoved();
 | 
|  }
 | 
|  
 | 
| -LRESULT AeroGlassFrame::OnNCActivate(BOOL active) {
 | 
| +LRESULT BrowserFrame::OnNCActivate(BOOL active) {
 | 
|    if (browser_view_->ActivateAppModalDialog())
 | 
|      return TRUE;
 | 
|  
 | 
| -  if (!frame_initialized_) {
 | 
| +  // Perform first time initialization of the DWM frame insets, only if we're
 | 
| +  // using the native frame.
 | 
| +  if (non_client_view_->UseNativeFrame() && !frame_initialized_) {
 | 
|      if (browser_view_->IsBrowserTypeNormal()) {
 | 
|        ::SetWindowPos(GetHWND(), NULL, 0, 0, 0, 0,
 | 
|                       SWP_NOSIZE | SWP_NOMOVE | SWP_FRAMECHANGED);
 | 
| @@ -140,14 +109,15 @@
 | 
|      frame_initialized_ = true;
 | 
|    }
 | 
|    browser_view_->ActivationChanged(!!active);
 | 
| -  SetMsgHandled(false);
 | 
| -  return TRUE;
 | 
| +  return Window::OnNCActivate(active);
 | 
|  }
 | 
|  
 | 
| -LRESULT AeroGlassFrame::OnNCCalcSize(BOOL mode, LPARAM l_param) {
 | 
| -  if (!browser_view_->IsBrowserTypeNormal() || !mode) {
 | 
| -    SetMsgHandled(FALSE);
 | 
| -    return 0;
 | 
| +LRESULT BrowserFrame::OnNCCalcSize(BOOL mode, LPARAM l_param) {
 | 
| +  // We don't adjust the client area unless we're a tabbed browser window and
 | 
| +  // are using the native frame.
 | 
| +  if (!non_client_view_->UseNativeFrame() ||
 | 
| +      !browser_view_->IsBrowserTypeNormal() || !mode) {
 | 
| +    return Window::OnNCCalcSize(mode, l_param);
 | 
|    }
 | 
|  
 | 
|    // In fullscreen mode, we make the whole window client area.
 | 
| @@ -165,26 +135,42 @@
 | 
|    return 0;
 | 
|  }
 | 
|  
 | 
| -LRESULT AeroGlassFrame::OnNCHitTest(const CPoint& pt) {
 | 
| -  LRESULT result;
 | 
| -  if (DwmDefWindowProc(GetHWND(), WM_NCHITTEST, 0, MAKELPARAM(pt.x, pt.y),
 | 
| -                       &result)) {
 | 
| -    return result;
 | 
| +LRESULT BrowserFrame::OnNCHitTest(const CPoint& pt) {
 | 
| +  // Only do DWM hit-testing when we are using the native frame.
 | 
| +  if (non_client_view_->UseNativeFrame()) {
 | 
| +    LRESULT result;
 | 
| +    if (DwmDefWindowProc(GetHWND(), WM_NCHITTEST, 0, MAKELPARAM(pt.x, pt.y),
 | 
| +                         &result)) {
 | 
| +      return result;
 | 
| +    }
 | 
|    }
 | 
|    return Window::OnNCHitTest(pt);
 | 
|  }
 | 
|  
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
| -// AeroGlassFrame, views::CustomFrameWindow overrides:
 | 
| +// BrowserFrame, views::CustomFrameWindow overrides:
 | 
|  
 | 
| -int AeroGlassFrame::GetShowState() const {
 | 
| +int BrowserFrame::GetShowState() const {
 | 
|    return browser_view_->GetShowState();
 | 
|  }
 | 
|  
 | 
| +views::NonClientFrameView* BrowserFrame::CreateFrameViewForWindow() {
 | 
| +  if (non_client_view_->UseNativeFrame())
 | 
| +    browser_frame_view_ = new GlassBrowserFrameView(this, browser_view_);
 | 
| +  else
 | 
| +    browser_frame_view_ = new OpaqueBrowserFrameView(this, browser_view_);
 | 
| +  return browser_frame_view_;
 | 
| +}
 | 
| +
 | 
| +void BrowserFrame::UpdateFrameAfterFrameChange() {
 | 
| +  Window::UpdateFrameAfterFrameChange();
 | 
| +  UpdateDWMFrame();
 | 
| +}
 | 
| +
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
| -// AeroGlassFrame, private:
 | 
| +// BrowserFrame, private:
 | 
|  
 | 
| -void AeroGlassFrame::UpdateDWMFrame() {
 | 
| +void BrowserFrame::UpdateDWMFrame() {
 | 
|    // Nothing to do yet.
 | 
|    if (!client_view())
 | 
|      return;
 | 
| @@ -203,41 +189,3 @@
 | 
|    DwmExtendFrameIntoClientArea(GetHWND(), &margins);
 | 
|  }
 | 
|  
 | 
| -AeroGlassNonClientView* AeroGlassFrame::GetAeroGlassNonClientView() const {
 | 
| -  // We can safely assume that this conversion is true.
 | 
| -  return static_cast<AeroGlassNonClientView*>(non_client_view_);
 | 
| -}
 | 
| -
 | 
| -void AeroGlassFrame::StartThrobber() {
 | 
| -  if (!throbber_running_) {
 | 
| -    throbber_running_ = true;
 | 
| -    throbber_frame_ = 0;
 | 
| -    InitThrobberIcons();
 | 
| -    ::SendMessage(GetHWND(), WM_SETICON, static_cast<WPARAM>(ICON_SMALL),
 | 
| -                  reinterpret_cast<LPARAM>(throbber_icons_[throbber_frame_]));
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void AeroGlassFrame::StopThrobber() {
 | 
| -  if (throbber_running_)
 | 
| -    throbber_running_ = false;
 | 
| -}
 | 
| -
 | 
| -void AeroGlassFrame::DisplayNextThrobberFrame() {
 | 
| -  throbber_frame_ = (throbber_frame_ + 1) % kThrobberIconCount;
 | 
| -  ::SendMessage(GetHWND(), WM_SETICON, static_cast<WPARAM>(ICON_SMALL),
 | 
| -                reinterpret_cast<LPARAM>(throbber_icons_[throbber_frame_]));
 | 
| -}
 | 
| -
 | 
| -// static
 | 
| -void AeroGlassFrame::InitThrobberIcons() {
 | 
| -  static bool initialized = false;
 | 
| -  if (!initialized) {
 | 
| -    ResourceBundle &rb = ResourceBundle::GetSharedInstance();
 | 
| -    for (int i = 0; i < kThrobberIconCount; ++i) {
 | 
| -      throbber_icons_[i] = rb.LoadThemeIcon(IDR_THROBBER_01 + i);
 | 
| -      DCHECK(throbber_icons_[i]);
 | 
| -    }
 | 
| -    initialized = true;
 | 
| -  }
 | 
| -}
 | 
| 
 | 
| Property changes on: chrome\browser\views\frame\browser_frame.cc
 | 
| ___________________________________________________________________
 | 
| Added: svn:mergeinfo
 | 
|    Merged /branches/chrome_webkit_merge_branch/chrome/browser/views/frame/aero_glass_frame.cc:r69-2775
 | 
| 
 | 
| 
 |