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

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

Issue 298303002: Add option to install an ephemeral app to ChromeOS shelf context menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed asargent's review comments Created 6 years, 7 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
Index: chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.cc
diff --git a/chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.cc b/chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.cc
index 14d80ecafdd11bacf235fe449a7c0d1b8fffed59..c3f0bad94eff227227d13af7f4848b4da33c920b 100644
--- a/chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.cc
+++ b/chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.cc
@@ -9,6 +9,7 @@
#include "ash/shelf/shelf_model.h"
#include "ash/wm/window_state.h"
#include "ash/wm/window_util.h"
+#include "chrome/browser/extensions/webstore_install_with_prompt.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item_v2app.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
@@ -50,6 +51,14 @@ scoped_ptr<gfx::Image> GetAppListIcon(AppWindow* app_window) {
new gfx::Image(gfx::ImageSkia::CreateFrom1xBitmap(bmp)));
}
+// Returns true if the app window is visible on screen, i.e. not hidden or
+// minimized.
+bool IsAppWindowVisible(AppWindow* app_window) {
+ return app_window &&
+ !app_window->is_hidden() &&
+ !app_window->GetBaseWindow()->IsMinimized();
+}
+
// Functor for std::find_if used in AppLauncherItemController.
class AppWindowHasWindow {
public:
@@ -151,6 +160,38 @@ void AppWindowLauncherItemController::ActivateIndexedApp(size_t index) {
ShowAndActivateOrMinimize(*it);
}
+void AppWindowLauncherItemController::InstallApp() {
+ // Find a visible window in order to position the install dialog. If there is
+ // no visible window, the dialog will be centered on the screen.
+ AppWindow* parent_window = NULL;
+ if (IsAppWindowVisible(last_active_app_window_)) {
+ parent_window = last_active_app_window_;
+ } else {
+ for (AppWindowList::iterator iter = app_windows_.begin();
+ iter != app_windows_.end(); ++iter) {
+ if (IsAppWindowVisible(*iter)) {
+ parent_window = *iter;
+ break;
+ }
+ }
+ }
+
+ scoped_refptr<extensions::WebstoreInstallWithPrompt> installer;
+ if (parent_window) {
+ installer = new extensions::WebstoreInstallWithPrompt(
+ app_id(),
+ launcher_controller()->profile(),
+ parent_window->GetNativeWindow(),
+ extensions::WebstoreInstallWithPrompt::Callback());
+ } else {
+ installer = new extensions::WebstoreInstallWithPrompt(
+ app_id(),
+ launcher_controller()->profile(),
+ extensions::WebstoreInstallWithPrompt::Callback());
+ }
+ installer->BeginInstall();
+}
+
ChromeLauncherAppMenuItems AppWindowLauncherItemController::GetApplicationList(
int event_flags) {
ChromeLauncherAppMenuItems items;

Powered by Google App Engine
This is Rietveld 408576698