| Index: chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc
|
| diff --git a/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc
|
| index 3baa7106bd21476f6efd6d861b3a6a1cf042aceb..869d2d173e886a8244e83d50de1cc47e829b48d2 100644
|
| --- a/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc
|
| +++ b/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc
|
| @@ -10,6 +10,7 @@
|
| #include "ash/wm/window_util.h"
|
| #include "base/stl_util.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "chrome/browser/chromeos/ash_config.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
|
| #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_item_controller.h"
|
| @@ -75,6 +76,24 @@ void ExtensionAppWindowLauncherController::AdditionalUserAddedToSession(
|
| registry_.insert(registry);
|
| }
|
|
|
| +void ExtensionAppWindowLauncherController::OnAppWindowAdded(
|
| + extensions::AppWindow* app_window) {
|
| + // TODO(msw): Determine why this only seems to be called in Mash. Setting the
|
| + // ShelfItemType as early as possible is important on Mash, to prevent Ash's
|
| + // ShelfWindowWatcher from creating a conflicting ShelfItem. Set the item type
|
| + // here for the mash config, and later on in RegisterApp for classic ash.
|
| + if (chromeos::GetAshConfig() != ash::Config::MASH)
|
| + return;
|
| +
|
| + const ash::ShelfID shelf_id = GetShelfId(app_window);
|
| + DCHECK(!shelf_id.IsNull());
|
| + aura::Window* window = app_window->GetNativeWindow();
|
| + window->SetProperty<int>(
|
| + ash::kShelfItemTypeKey,
|
| + app_window->window_type_is_panel() ? ash::TYPE_APP_PANEL : ash::TYPE_APP);
|
| + window->SetProperty(ash::kShelfIDKey, new std::string(shelf_id.Serialize()));
|
| +}
|
| +
|
| void ExtensionAppWindowLauncherController::OnAppWindowShown(
|
| AppWindow* app_window,
|
| bool was_hidden) {
|
| @@ -99,10 +118,19 @@ void ExtensionAppWindowLauncherController::OnWindowDestroying(
|
| }
|
|
|
| void ExtensionAppWindowLauncherController::RegisterApp(AppWindow* app_window) {
|
| + aura::Window* window = app_window->GetNativeWindow();
|
| const ash::ShelfID shelf_id = GetShelfId(app_window);
|
| DCHECK(!shelf_id.IsNull());
|
| - aura::Window* window = app_window->GetNativeWindow();
|
| - window->SetProperty(ash::kShelfIDKey, new std::string(shelf_id.Serialize()));
|
| +
|
| + // TODO(msw): Determine why OnAppWindowAdded only seems to be called in Mash.
|
| + if (chromeos::GetAshConfig() != ash::Config::MASH) {
|
| + window->SetProperty(ash::kShelfIDKey,
|
| + new std::string(shelf_id.Serialize()));
|
| + window->SetProperty<int>(ash::kShelfItemTypeKey,
|
| + app_window->window_type_is_panel()
|
| + ? ash::TYPE_APP_PANEL
|
| + : ash::TYPE_APP);
|
| + }
|
|
|
| // Windows created by IME extension should be treated the same way as the
|
| // virtual keyboard window, which does not register itself in launcher.
|
|
|