Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1133)

Unified Diff: chrome/browser/chromeos/login/webui_login_display_host.cc

Issue 11673006: Disabled transparency for header bars on the signin screen. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/webui_login_display_host.cc
diff --git a/chrome/browser/chromeos/login/webui_login_display_host.cc b/chrome/browser/chromeos/login/webui_login_display_host.cc
index ecc3cd0e20c76b04c5bd49a122e32931e7b23ab6..60c7205b188dcbe268969001f9487179876c04b4 100644
--- a/chrome/browser/chromeos/login/webui_login_display_host.cc
+++ b/chrome/browser/chromeos/login/webui_login_display_host.cc
@@ -9,6 +9,7 @@
#include "ash/shell.h"
#include "ash/shell_window_ids.h"
#include "ash/wm/window_animations.h"
+#include "ash/wm/window_properties.h"
#include "base/command_line.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
@@ -27,6 +28,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
#include "ui/aura/env.h"
+#include "ui/aura/root_window.h"
#include "ui/aura/window.h"
#include "ui/views/widget/widget.h"
@@ -66,7 +68,8 @@ WebUILoginDisplayHost::WebUILoginDisplayHost(const gfx::Rect& background_bounds)
is_wallpaper_loaded_(false),
status_area_saved_visibility_(false),
crash_count_(0),
- restore_path_(RESTORE_UNKNOWN) {
+ restore_path_(RESTORE_UNKNOWN),
+ old_ignore_solo_window_policy_value_(false) {
bool is_registered = WizardController::IsDeviceRegistered();
bool zero_delay_enabled = WizardController::IsZeroDelayEnabled();
bool disable_boot_animation = CommandLine::ForCurrentProcess()->
@@ -136,8 +139,7 @@ WebUILoginDisplayHost::WebUILoginDisplayHost(const gfx::Rect& background_bounds)
}
WebUILoginDisplayHost::~WebUILoginDisplayHost() {
- if (login_window_)
- login_window_->Close();
+ ResetLoginWindowAndView();
}
// LoginDisplayHost implementation ---------------------------------------------
@@ -228,11 +230,7 @@ void WebUILoginDisplayHost::OnPreferencesChanged() {
void WebUILoginDisplayHost::OnBrowserCreated() {
// Close lock window now so that the launched browser can receive focus.
- if (login_window_) {
- login_window_->Close();
- login_window_ = NULL;
- login_view_ = NULL;
- }
+ ResetLoginWindowAndView();
}
void WebUILoginDisplayHost::Observe(
@@ -276,48 +274,7 @@ void WebUILoginDisplayHost::Observe(
}
void WebUILoginDisplayHost::LoadURL(const GURL& url) {
- if (!login_window_) {
- views::Widget::InitParams params(
- views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
- params.bounds = background_bounds();
- params.show_state = ui::SHOW_STATE_FULLSCREEN;
- if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableNewOobe))
- params.transparent = true;
- params.parent =
- ash::Shell::GetContainer(
- ash::Shell::GetPrimaryRootWindow(),
- ash::internal::kShellWindowId_LockScreenContainer);
-
- login_window_ = new views::Widget;
- login_window_->Init(params);
- login_view_ = new WebUILoginView();
-
- login_view_->Init(login_window_);
-
- views::corewm::SetWindowVisibilityAnimationDuration(
- login_window_->GetNativeView(),
- base::TimeDelta::FromMilliseconds(kLoginFadeoutTransitionDurationMs));
- views::corewm::SetWindowVisibilityAnimationTransition(
- login_window_->GetNativeView(),
- views::corewm::ANIMATE_HIDE);
-
- login_window_->SetContentsView(login_view_);
- login_view_->UpdateWindowType();
-
- // If WebUI is initialized in hidden state, show it only if we're no
- // longer waiting for wallpaper animation/user images loading. Otherwise,
- // always show it.
- if (!initialize_webui_hidden_ ||
- (!waiting_for_wallpaper_load_ && !waiting_for_user_pods_)) {
- LOG(INFO) << "Login WebUI >> show login wnd on create";
- login_window_->Show();
- } else {
- LOG(INFO) << "Login WebUI >> login wnd is hidden on create";
- login_view_->set_is_hidden(true);
- }
- login_window_->GetNativeView()->SetName("WebUILoginView");
- login_view_->OnWindowCreated();
- }
+ InitLoginWindowAndView();
// Subscribe to crash events.
content::WebContentsObserver::Observe(login_view_->GetWebContents());
login_view_->LoadURL(url);
@@ -403,4 +360,74 @@ void WebUILoginDisplayHost::StartPostponedWebUI() {
}
}
+void WebUILoginDisplayHost::InitLoginWindowAndView() {
+ if (login_window_)
+ return;
+
+ views::Widget::InitParams params(
+ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+ params.bounds = background_bounds();
+ params.show_state = ui::SHOW_STATE_FULLSCREEN;
+ if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableNewOobe))
+ params.transparent = true;
+ params.parent =
+ ash::Shell::GetContainer(
+ ash::Shell::GetPrimaryRootWindow(),
+ ash::internal::kShellWindowId_LockScreenContainer);
+
+ login_window_ = new views::Widget;
+ login_window_->Init(params);
+ if (login_window_->GetNativeWindow()) {
+ aura::RootWindow* root = login_window_->GetNativeWindow()->GetRootWindow();
+ if (root) {
+ old_ignore_solo_window_policy_value_ =
+ root->GetProperty(ash::internal::kIgnoreSoloWindowPolicy);
+ root->SetProperty(ash::internal::kIgnoreSoloWindowPolicy, true);
+ }
+ }
+ login_view_ = new WebUILoginView();
+
+ login_view_->Init(login_window_);
+
+ views::corewm::SetWindowVisibilityAnimationDuration(
+ login_window_->GetNativeView(),
+ base::TimeDelta::FromMilliseconds(kLoginFadeoutTransitionDurationMs));
+ views::corewm::SetWindowVisibilityAnimationTransition(
+ login_window_->GetNativeView(),
+ views::corewm::ANIMATE_HIDE);
+
+ login_window_->SetContentsView(login_view_);
+ login_view_->UpdateWindowType();
+
+ // If WebUI is initialized in hidden state, show it only if we're no
+ // longer waiting for wallpaper animation/user images loading. Otherwise,
+ // always show it.
+ if (!initialize_webui_hidden_ ||
+ (!waiting_for_wallpaper_load_ && !waiting_for_user_pods_)) {
+ LOG(INFO) << "Login WebUI >> show login wnd on create";
+ login_window_->Show();
+ } else {
+ LOG(INFO) << "Login WebUI >> login wnd is hidden on create";
+ login_view_->set_is_hidden(true);
+ }
+ login_window_->GetNativeView()->SetName("WebUILoginView");
+ login_view_->OnWindowCreated();
+}
+
+void WebUILoginDisplayHost::ResetLoginWindowAndView() {
+ if (!login_window_)
+ return;
+
+ if (login_window_->GetNativeWindow()) {
+ aura::RootWindow* root = login_window_->GetNativeWindow()->GetRootWindow();
+ if (root) {
+ root->SetProperty(ash::internal::kIgnoreSoloWindowPolicy,
+ old_ignore_solo_window_policy_value_);
+ }
+ }
+ login_window_->Close();
+ login_window_ = NULL;
+ login_view_ = NULL;
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698