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

Unified Diff: chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc

Issue 2345043002: arc: Prevent showing Arc app window for secondary user profile. (Closed)
Patch Set: refactored Created 4 years, 3 months 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
« no previous file with comments | « chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc
diff --git a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc
index 5038c15ee2d7e8662ad46f5b51cf017612bf5050..4077abe01c80e56e80678cbe004fb47716076ff9 100644
--- a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc
@@ -87,6 +87,18 @@ blink::WebScreenOrientationLockType BlinkOrientationLockFromMojom(
}
}
+int GetWindowTaskId(aura::Window* window) {
+ const std::string window_app_id = exo::ShellSurface::GetApplicationId(window);
+ if (window_app_id.empty())
+ return -1;
+
+ int task_id = -1;
+ if (sscanf(window_app_id.c_str(), "org.chromium.arc.%d", &task_id) != 1)
+ return -1;
+
+ return task_id;
+}
+
} // namespace
class ArcAppWindowLauncherController::AppWindow : public ui::BaseWindow {
@@ -292,13 +304,21 @@ void ArcAppWindowLauncherController::OnWindowInitialized(aura::Window* window) {
void ArcAppWindowLauncherController::OnWindowVisibilityChanged(
aura::Window* window,
bool visible) {
+ if (!visible)
+ return;
// The application id property should be set at this time. It is important to
// have window->IsVisible set to true before attaching to a controller because
// the window is registered in multi-user manager and this manager may
// consider this new window as hidden for current profile. Multi-user manager
// uses OnWindowVisibilityChanging event to update window state.
- if (visible && observed_profile_ == owner()->GetProfile())
+ if (observed_profile_ == owner()->GetProfile()) {
AttachControllerToWindowIfNeeded(window);
+ } else {
+ // Attach window to multi-user manager now to let it manage visibility state
+ // of the Arc window correctly.
+ if (GetWindowTaskId(window) > 0)
+ AttachWindowToMultiUserManager(window);
Mr4D (OOO till 08-26) 2016/09/16 19:08:55 Hmm.. This should only be needed in one place. Why
khmel 2016/09/16 19:19:30 Let me summarize: 1. AttachControllerToWindowIfNe
Mr4D (OOO till 08-26) 2016/09/16 22:07:28 Okay. I understand that the icon would be shown si
khmel 2016/09/16 22:38:44 Done as we discussed off-line
+ }
}
void ArcAppWindowLauncherController::OnWindowDestroying(aura::Window* window) {
@@ -335,17 +355,18 @@ void ArcAppWindowLauncherController::AttachControllerToWindowsIfNeeded() {
AttachControllerToWindowIfNeeded(window);
}
-void ArcAppWindowLauncherController::AttachControllerToWindowIfNeeded(
+void ArcAppWindowLauncherController::AttachWindowToMultiUserManager(
aura::Window* window) {
- const std::string window_app_id = exo::ShellSurface::GetApplicationId(window);
- if (window_app_id.empty())
- return;
-
- int task_id = -1;
- if (sscanf(window_app_id.c_str(), "org.chromium.arc.%d", &task_id) != 1)
- return;
+ DCHECK(window);
+ chrome::MultiUserWindowManager::GetInstance()->SetWindowOwner(
+ window,
+ user_manager::UserManager::Get()->GetPrimaryUser()->GetAccountId());
+}
- if (!task_id)
+void ArcAppWindowLauncherController::AttachControllerToWindowIfNeeded(
+ aura::Window* window) {
+ const int task_id = GetWindowTaskId(window);
+ if (task_id <= 0)
return;
// We need to add the observer after exo started observing shell
@@ -375,9 +396,7 @@ void ArcAppWindowLauncherController::AttachControllerToWindowIfNeeded(
DCHECK(app_window->controller());
ash::WmWindowAura::Get(window)->SetIntProperty(
ash::WmWindowProperty::SHELF_ID, app_window->shelf_id());
- chrome::MultiUserWindowManager::GetInstance()->SetWindowOwner(
- window,
- user_manager::UserManager::Get()->GetPrimaryUser()->GetAccountId());
+ AttachWindowToMultiUserManager(window);
if (ash::WmShell::Get()
->maximize_mode_controller()
->IsMaximizeModeWindowManagerEnabled()) {
« no previous file with comments | « chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698