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

Unified Diff: chrome/browser/resources/md_extensions/item_util.js

Issue 2723613004: [MD Extensions] Update Detail View UI (Closed)
Patch Set: missed an i18n Created 3 years, 10 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/resources/md_extensions/item_util.js
diff --git a/chrome/browser/resources/md_extensions/item_util.js b/chrome/browser/resources/md_extensions/item_util.js
new file mode 100644
index 0000000000000000000000000000000000000000..f1d5ae93d2ca926c9fc458a7656de161f61314fb
--- /dev/null
+++ b/chrome/browser/resources/md_extensions/item_util.js
@@ -0,0 +1,121 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
michaelpg 2017/03/06 19:08:46 2017 (looks like more than a straight rename)
Devlin 2017/03/06 20:12:12 Done.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Closure compiler won't let this be declared inside cr.define().
+/** @enum {string} */
+var SourceType = {
+ WEBSTORE: 'webstore',
+ POLICY: 'policy',
+ SIDELOADED: 'sideloaded',
+ UNPACKED: 'unpacked',
+};
+
+cr.define('extensions', function() {
+ /**
+ * Returns true if the extension is enabled, including terminated
+ * extensions.
+ * @param {chrome.developerPrivate.ExtensionState} state
michaelpg 2017/03/06 19:08:46 !
Devlin 2017/03/06 20:12:12 Done.
+ * @return {boolean}
+ */
+ function isEnabled(state) {
+ switch (state) {
+ case chrome.developerPrivate.ExtensionState.ENABLED:
+ case chrome.developerPrivate.ExtensionState.TERMINATED:
+ return true;
+ case chrome.developerPrivate.ExtensionState.DISABLED:
+ return false;
+ }
+ assertNotReached(); // FileNotFound.
michaelpg 2017/03/06 19:08:46 FileNotFound?
Devlin 2017/03/06 20:12:12 Bad joke (that was in the last file): http://theda
michaelpg 2017/03/06 22:19:57 Ah. Hehe, and it works on two levels because we'd
+ }
+
+ /**
+ * Returns true if the user can change whether or not the extension is
+ * enabled.
+ * @param {chrome.developerPrivate.ExtensionInfo} item
michaelpg 2017/03/06 19:08:46 !
Devlin 2017/03/06 20:12:12 Done.
+ * @return {boolean}
+ */
+ function userCanChangeEnablement(item) {
+ // User doesn't have permission.
+ if (!item.userMayModify)
+ return false;
+ // Item is forcefully disabled.
+ if (item.disableReasons.corruptInstall ||
+ item.disableReasons.suspiciousInstall ||
+ item.disableReasons.updateRequired) {
+ return false;
+ }
+ // An item with dependent extensions can't be disabled (it would bork the
+ // dependents).
+ if (item.dependentExtensions.length > 0)
+ return false;
+ // Blacklisted can't be enabled, either.
+ if (item.state == chrome.developerPrivate.ExtensionState.BLACKLISTED)
+ return false;
+
+ return true;
+ }
+
+ /**
+ * @param {chrome.developerPrivate.ExtensionInfo} item
michaelpg 2017/03/06 19:08:46 !
Devlin 2017/03/06 20:12:12 Done.
+ * @return {SourceType}
+ */
+ function getItemSource(item) {
+ if (item.controlledInfo &&
+ item.controlledInfo.type ==
+ chrome.developerPrivate.ControllerType.POLICY) {
+ return SourceType.POLICY;
+ }
+ if (item.location == chrome.developerPrivate.Location.THIRD_PARTY)
+ return SourceType.SIDELOADED;
+ if (item.location == chrome.developerPrivate.Location.UNPACKED)
+ return SourceType.UNPACKED;
+ return SourceType.WEBSTORE;
+ }
+
+ /**
+ * @param {SourceType} source
+ * @return {string}
+ */
+ function getItemSourceString(source) {
+ switch (source) {
+ case SourceType.POLICY:
+ return loadTimeData.getString('itemSourcePolicy');
+ case SourceType.SIDELOADED:
+ return loadTimeData.getString('itemSourceSideloaded');
+ case SourceType.UNPACKED:
+ return loadTimeData.getString('itemSourceUnpacked');
+ case SourceType.WEBSTORE:
+ return loadTimeData.getString('itemSourceWebstore');
+ }
+ assertNotReached();
+ }
+
+ /**
+ * Computes the human-facing label for the given inspectable view.
+ * @param {chrome.developerPrivate.ExtensionView} view
michaelpg 2017/03/06 19:08:46 non-null: !
Devlin 2017/03/06 20:12:12 Done.
+ * @return {string}
+ */
+ function computeInspectableViewLabel(view) {
+ // Trim the "chrome-extension://<id>/".
+ var url = new URL(view.url);
+ var label = view.url;
+ if (url.protocol == 'chrome-extension:')
+ label = url.pathname.substring(1);
+ if (label == '_generated_background_page.html')
+ label = loadTimeData.getString('viewBackgroundPage');
+ // Add any qualifiers.
+ label += (view.incognito ? ' ' +
michaelpg 2017/03/06 19:08:46 this would be more readable as a series of if's
Devlin 2017/03/06 20:12:12 Done.
+ loadTimeData.getString('viewIncognito') : '') +
+ (view.renderProcessId == -1 ?
+ ' ' + loadTimeData.getString('viewInactive') : '') +
+ (view.isIframe ? ' ' + loadTimeData.getString('viewIframe') : '');
+ return label;
+ }
+
+ return {isEnabled: isEnabled,
+ userCanChangeEnablement: userCanChangeEnablement,
+ getItemSource: getItemSource,
+ getItemSourceString: getItemSourceString,
+ computeInspectableViewLabel: computeInspectableViewLabel};
+});

Powered by Google App Engine
This is Rietveld 408576698