Index: chrome/browser/resources/ntp/apps.js |
diff --git a/chrome/browser/resources/ntp/apps.js b/chrome/browser/resources/ntp/apps.js |
index d9098d555f35675bc8599b0c9b42d1cebef72f3a..b128f05e901912f5b09ee36e146e87ce298bcbb1 100644 |
--- a/chrome/browser/resources/ntp/apps.js |
+++ b/chrome/browser/resources/ntp/apps.js |
@@ -36,6 +36,15 @@ function getAppsCallback(data) { |
} |
} |
+function appsPrefChangeCallback(data) { |
+ // Currently the only pref that is watched is the launch type. |
+ data.apps.forEach(function(app) { |
+ var appLink = document.querySelector('.app a[app-id=' + app['id'] + ']'); |
+ if (appLink) |
+ appLink.setAttribute('launch-type', app['launch_type']); |
+ }); |
+} |
+ |
var apps = (function() { |
function createElement(app) { |
@@ -44,6 +53,7 @@ var apps = (function() { |
var a = div.appendChild(document.createElement('a')); |
a.setAttribute('app-id', app['id']); |
+ a.setAttribute('launch-type', app['launch_type']); |
a.xtitle = a.textContent = app['name']; |
a.href = app['launch_url']; |
@@ -99,6 +109,20 @@ var apps = (function() { |
return false; |
} |
+ // Keep in sync with LaunchType in extension_prefs.h |
+ var LaunchType = { |
+ LAUNCH_PINNED: 0, |
+ LAUNCH_REGULAR: 1, |
+ LAUNCH_FULLSCREEN: 2 |
+ }; |
+ |
+ // Keep in sync with LaunchContainer in extension.h |
+ var LaunchContainer = { |
+ LAUNCH_WINDOW: 0, |
+ LAUNCH_PANEL: 1, |
+ LAUNCH_TAB: 2 |
+ }; |
+ |
var currentApp; |
function addContextMenu(el, app) { |
@@ -113,6 +137,24 @@ var apps = (function() { |
$('apps-launch-command').label = app['name']; |
$('apps-options-command').canExecuteChange(); |
+ var appLinkSel = '.app a[app-id=' + app['id'] + ']'; |
+ var launchType = |
+ el.querySelector(appLinkSel).getAttribute('launch-type'); |
+ |
+ var launchContainer = app['launch_container']; |
+ var isPanel = launchContainer == LaunchContainer.LAUNCH_PANEL; |
+ |
+ // Update the commands related to the launch type. |
+ var launchTypeIds = ['apps-launch-type-pinned', |
+ 'apps-launch-type-regular', |
+ 'apps-launch-type-fullscreen']; |
+ launchTypeIds.forEach(function(id) { |
+ var command = $(id); |
+ command.disabled = isPanel; |
+ command.checked = !isPanel && |
+ launchType == command.getAttribute('launch-type'); |
+ }); |
+ |
return $('app-context-menu'); |
} |
}); |
@@ -122,7 +164,8 @@ var apps = (function() { |
if (!currentApp) |
return; |
- switch (e.command.id) { |
+ var commandId = e.command.id; |
+ switch (commandId) { |
case 'apps-options-command': |
window.location = currentApp['options_url']; |
break; |
@@ -132,6 +175,12 @@ var apps = (function() { |
case 'apps-uninstall-command': |
chrome.send('uninstallApp', [currentApp['id']]); |
break; |
+ case 'apps-launch-type-pinned': |
+ case 'apps-launch-type-regular': |
+ case 'apps-launch-type-fullscreen': |
+ chrome.send('setLaunchType', |
+ [currentApp['id'], e.command.getAttribute('launch-type')]); |
+ break; |
} |
}); |