diff options
author | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-07 00:29:10 +0000 |
---|---|---|
committer | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-07 00:29:10 +0000 |
commit | f18cde9b9bda82aac3537c1959a55e463055974f (patch) | |
tree | c9c82c6f6f6e7e295168355da8056f04de4488c6 | |
parent | 93af0733aab11e5a8eb8beb84d77c38b3c30e9b0 (diff) | |
download | chromium_src-f18cde9b9bda82aac3537c1959a55e463055974f.zip chromium_src-f18cde9b9bda82aac3537c1959a55e463055974f.tar.gz chromium_src-f18cde9b9bda82aac3537c1959a55e463055974f.tar.bz2 |
Revert 125251 - Ash: Use translucent frames by default
Was crashing a test on Linux ChromiumOS Tester (1):
[ RUN ] PrintPreviewUIUnitTest.PrintPreviewData
base::debug::StackTrace::StackTrace() [0x27842fe]
base::(anonymous namespace)::StackDumpSignalHandler() [0x27bcd09]
0x7f5819766af0
ConstrainedWindowViews::ConstrainedWindowViews() [0x1c785db]
ConstrainedHtmlUI::CreateConstrainedHtmlDialog() [0x1c78170]
printing::PrintPreviewTabController::CreatePrintPreviewTab() [0x1a63a21]
printing::PrintPreviewTabController::GetOrCreatePreviewTab() [0x1a63dfb]
PrintPreviewUIUnitTest_PrintPreviewData_Test::TestBody() [0x12200ba]
testing::Test::Run() [0x2351031]
testing::TestInfo::Run() [0x23510fa]
testing::TestCase::Run() [0x2351247]
testing::internal::UnitTestImpl::RunAllTests() [0x23514dd]
testing::UnitTest::Run() [0x234fbe3]
base::TestSuite::Run() [0x3ef7f48]
main [0x24716e5]
0x7f5819751c4d
0x423779
Remove --aura-translucent-frames switch. Tie old-style frames to the existing --aura-window-mode=compact flag.
Also fix a couple of cases where views::Widget wasn't be flagged as transparent, which would lead to black pixels in the window corners and incorrect headers in the inactive state.
BUG=113075
TEST=visual, look at active and inactive browser windows, popup windows, cookie management (constrained dialog), task manager (general dialog)
Review URL: http://codereview.chromium.org/9618022
TBR=jamescook@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9617029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125266 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ash/ash_switches.cc | 4 | ||||
-rw-r--r-- | ash/ash_switches.h | 1 | ||||
-rw-r--r-- | ash/shell.cc | 4 | ||||
-rw-r--r-- | chrome/browser/about_flags.cc | 7 | ||||
-rw-r--r-- | chrome/browser/ui/views/constrained_window_views.cc | 12 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_frame.cc | 5 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_aura.cc | 18 | ||||
-rw-r--r-- | chrome/browser/ui/views/window.cc | 24 |
8 files changed, 31 insertions, 44 deletions
diff --git a/ash/ash_switches.cc b/ash/ash_switches.cc index b45a9e2..e5556e0 100644 --- a/ash/ash_switches.cc +++ b/ash/ash_switches.cc @@ -16,7 +16,6 @@ const char kAshUberTray[] = "ash-uber-tray"; // Force the "compact" window mode regardless of the value of kAuraWindowMode. // This can be used to override a value set in chrome://flags. -// Also implies fully-opaque windows for performance. // TODO(derat): Remove this once the normal mode is usable on all platforms. const char kAuraForceCompactWindowMode[] = "aura-force-compact-window-mode"; @@ -32,6 +31,9 @@ const char kAuraLegacyPowerButton[] = "aura-legacy-power-button"; // Avoid drawing drop shadows under windows. const char kAuraNoShadows[] = "aura-no-shadows"; +// Use Aura-style translucent window frame. +const char kAuraTranslucentFrames[] = "aura-translucent-frames"; + // If present animations are disabled. const char kAuraWindowAnimationsDisabled[] = "aura-window-animations-disabled"; diff --git a/ash/ash_switches.h b/ash/ash_switches.h index 1b8fa7a..70ae9d7 100644 --- a/ash/ash_switches.h +++ b/ash/ash_switches.h @@ -21,6 +21,7 @@ ASH_EXPORT extern const char kAuraForceCompactWindowMode[]; ASH_EXPORT extern const char kAuraGoogleDialogFrames[]; ASH_EXPORT extern const char kAuraLegacyPowerButton[]; ASH_EXPORT extern const char kAuraNoShadows[]; +ASH_EXPORT extern const char kAuraTranslucentFrames[]; ASH_EXPORT extern const char kAuraWindowAnimationsDisabled[]; ASH_EXPORT extern const char kAuraWindowMode[]; ASH_EXPORT extern const char kAuraWindowModeCompact[]; diff --git a/ash/shell.cc b/ash/shell.cc index f37f2f7..1041a3d 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -589,8 +589,8 @@ views::NonClientFrameView* Shell::CreateDefaultNonClientFrameView( switches::kAuraGoogleDialogFrames)) { return new internal::DialogFrameView; } - // Normal non-compact-mode gets translucent-style window frames for dialogs. - if (!IsWindowModeCompact()) { + if (CommandLine::ForCurrentProcess()->HasSwitch( + switches::kAuraTranslucentFrames)) { internal::CustomFrameViewAsh* frame_view = new internal::CustomFrameViewAsh; frame_view->Init(widget); return frame_view; diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index a69b7e6..d71473b 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -451,6 +451,13 @@ const Experiment kExperiments[] = { }, #if defined(USE_AURA) { + "aura-translucent-frames", + IDS_FLAGS_AURA_TRANSLUCENT_FRAMES_NAME, + IDS_FLAGS_AURA_TRANSLUCENT_FRAMES_DESCRIPTION, + kOsWin | kOsLinux | kOsCrOS, + SINGLE_VALUE_TYPE(ash::switches::kAuraTranslucentFrames) + }, + { "aura-google-dialog-frames", IDS_FLAGS_AURA_GOOGLE_DIALOG_FRAMES_NAME, IDS_FLAGS_AURA_GOOGLE_DIALOG_FRAMES_DESCRIPTION, diff --git a/chrome/browser/ui/views/constrained_window_views.cc b/chrome/browser/ui/views/constrained_window_views.cc index 7dbdae0..fb42722 100644 --- a/chrome/browser/ui/views/constrained_window_views.cc +++ b/chrome/browser/ui/views/constrained_window_views.cc @@ -566,11 +566,6 @@ ConstrainedWindowViews::ConstrainedWindowViews( params.native_widget = native_constrained_window_->AsNativeWidget(); params.child = true; params.parent = wrapper->web_contents()->GetNativeView(); -#if defined(USE_AURA) - // In non-compact mode the window header can be transparent. - if (!ash::Shell::GetInstance()->IsWindowModeCompact()) - params.transparent = true; -#endif Init(params); wrapper_->constrained_window_tab_helper()->AddConstrainedDialog(this); @@ -617,11 +612,10 @@ gfx::NativeWindow ConstrainedWindowViews::GetNativeWindow() { views::NonClientFrameView* ConstrainedWindowViews::CreateNonClientFrameView() { #if defined(USE_AURA) CommandLine* command_line = CommandLine::ForCurrentProcess(); - if (command_line->HasSwitch(ash::switches::kAuraGoogleDialogFrames)) - return ash::Shell::GetInstance()->CreateDefaultNonClientFrameView(this); - // In non-compact mode use fancy translucent headers. - if (!ash::Shell::GetInstance()->IsWindowModeCompact()) + if (command_line->HasSwitch(ash::switches::kAuraGoogleDialogFrames) || + command_line->HasSwitch(ash::switches::kAuraTranslucentFrames)) { return ash::Shell::GetInstance()->CreateDefaultNonClientFrameView(this); + } #endif return new ConstrainedWindowFrameView(this); } diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc index 58e3554..f5ab38d 100644 --- a/chrome/browser/ui/views/frame/browser_frame.cc +++ b/chrome/browser/ui/views/frame/browser_frame.cc @@ -4,6 +4,7 @@ #include "chrome/browser/ui/views/frame/browser_frame.h" +#include "base/command_line.h" #include "base/i18n/rtl.h" #include "chrome/browser/themes/theme_service.h" #include "chrome/browser/themes/theme_service_factory.h" @@ -78,8 +79,8 @@ void BrowserFrame::InitBrowserFrame() { #endif } #if defined(USE_AURA) - // Compact mode has opaque frames, otherwise Aura frames are translucent. - if (!ash::Shell::GetInstance()->IsWindowModeCompact()) + CommandLine* command_line = CommandLine::ForCurrentProcess(); + if (command_line->HasSwitch(ash::switches::kAuraTranslucentFrames)) params.transparent = true; // Aura compact mode fills the monitor with with its windows. if (ash::Shell::GetInstance()->IsWindowModeCompact() && diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_aura.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_aura.cc index 72d6878..fdbe881 100644 --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_aura.cc +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_aura.cc @@ -4,7 +4,9 @@ #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.h" +#include "ash/ash_switches.h" #include "ash/shell.h" +#include "base/command_line.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/panels/panel_browser_frame_view.h" #include "chrome/browser/ui/panels/panel_browser_view.h" @@ -22,8 +24,6 @@ BrowserNonClientFrameView* CreateBrowserNonClientFrameView( return new PanelBrowserFrameView( frame, static_cast<PanelBrowserView*>(browser_view)); } - - // Compact mode uses special opaque frames. if (ash::Shell::GetInstance()->IsWindowModeCompact()) return new CompactBrowserFrameView(frame, browser_view); @@ -31,11 +31,15 @@ BrowserNonClientFrameView* CreateBrowserNonClientFrameView( if (browser_view->browser()->is_app() && browser_view->IsMaximized()) return new AppNonClientFrameViewAura(frame, browser_view); - // Default is potentially translucent fancy frames. - BrowserNonClientFrameViewAura* frame_view = - new BrowserNonClientFrameViewAura(frame, browser_view); - frame_view->Init(); - return frame_view; + CommandLine* command_line = CommandLine::ForCurrentProcess(); + if (command_line->HasSwitch(ash::switches::kAuraTranslucentFrames)) { + BrowserNonClientFrameViewAura* frame_view = + new BrowserNonClientFrameViewAura(frame, browser_view); + frame_view->Init(); + return frame_view; + } + + return new OpaqueBrowserFrameView(frame, browser_view); } } // namespace browser diff --git a/chrome/browser/ui/views/window.cc b/chrome/browser/ui/views/window.cc index b7fcc01..d3b0e56 100644 --- a/chrome/browser/ui/views/window.cc +++ b/chrome/browser/ui/views/window.cc @@ -33,28 +33,6 @@ // The remainder of the code here is dealing with the legacy CrOS WM and // can also be removed. -namespace { - -views::Widget* CreateViewsWindowWithParent(gfx::NativeWindow parent, - views::WidgetDelegate* delegate) { - views::Widget* widget = new views::Widget; - views::Widget::InitParams params; - params.delegate = delegate; -#if defined(OS_WIN) || defined(USE_AURA) - params.parent = parent; -#endif -#if defined(USE_AURA) - // Outside of compact mode, dialog windows may have translucent frames. - // TODO(jamescook): Find a better way to set this. - if (!ash::Shell::GetInstance()->IsWindowModeCompact()) - params.transparent = true; -#endif - widget->Init(params); - return widget; -} - -} // namespace - namespace browser { views::Widget* CreateViewsWindow(gfx::NativeWindow parent, @@ -63,7 +41,7 @@ views::Widget* CreateViewsWindow(gfx::NativeWindow parent, #if defined(OS_CHROMEOS) && !defined(USE_AURA) return chromeos::BubbleWindow::Create(parent, style, delegate); #else - return CreateViewsWindowWithParent(parent, delegate); + return views::Widget::CreateWindowWithParent(delegate, parent); #endif } |