summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/resources/extensions
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2023-02-13 16:03:23 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2023-05-26 11:26:35 +0000
commit813d9ae984a99e739b99cf694a9d5b24d0a6b7a7 (patch)
tree60c14d40d77a3c702c8a72887662d97c0b8f3e99 /chromium/chrome/browser/resources/extensions
parenteb596ba9fe579987eb93f6b4021ca156885b48c2 (diff)
BASELINE: Update Chromium to 110.0.5481.111
Change-Id: I2b5f5ed66fee2a6f8da61c9b17fd1b25bb5b3a4e Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/464348 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/resources/extensions')
-rw-r--r--chromium/chrome/browser/resources/extensions/BUILD.gn2
-rw-r--r--chromium/chrome/browser/resources/extensions/activity_log/activity_log.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/code_section.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/detail_view.html12
-rw-r--r--chromium/chrome/browser/resources/extensions/detail_view.ts8
-rw-r--r--chromium/chrome/browser/resources/extensions/error_page.ts13
-rw-r--r--chromium/chrome/browser/resources/extensions/host_permissions_toggle_list.html4
-rw-r--r--chromium/chrome/browser/resources/extensions/item.html6
-rw-r--r--chromium/chrome/browser/resources/extensions/item_mixin.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/item_util.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/keyboard_shortcuts.html5
-rw-r--r--chromium/chrome/browser/resources/extensions/keyboard_shortcuts.ts9
-rw-r--r--chromium/chrome/browser/resources/extensions/kiosk_browser_proxy.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/kiosk_dialog.ts10
-rw-r--r--chromium/chrome/browser/resources/extensions/manager.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/pack_dialog_alert.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/runtime_host_permissions.html6
-rw-r--r--chromium/chrome/browser/resources/extensions/runtime_hosts_dialog.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/service.ts189
-rw-r--r--chromium/chrome/browser/resources/extensions/shortcut_input.html4
-rw-r--r--chromium/chrome/browser/resources/extensions/shortcut_input.ts29
-rw-r--r--chromium/chrome/browser/resources/extensions/shortcut_util.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.html5
-rw-r--r--chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.ts114
-rw-r--r--chromium/chrome/browser/resources/extensions/site_permissions_edit_url_dialog.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/site_permissions_site_group.ts2
-rw-r--r--chromium/chrome/browser/resources/extensions/site_settings_mixin.ts4
-rw-r--r--chromium/chrome/browser/resources/extensions/toolbar.ts2
28 files changed, 246 insertions, 198 deletions
diff --git a/chromium/chrome/browser/resources/extensions/BUILD.gn b/chromium/chrome/browser/resources/extensions/BUILD.gn
index 1c111086ae7..936a541e79d 100644
--- a/chromium/chrome/browser/resources/extensions/BUILD.gn
+++ b/chromium/chrome/browser/resources/extensions/BUILD.gn
@@ -102,7 +102,7 @@ build_webui("build") {
optimize_webui_host = "extensions"
optimize_webui_out_files = [ "extensions.rollup.js" ]
optimize_webui_in_files = [ "extensions.js" ]
- optimize_webui_excludes = [ "chrome://resources/js/cr.m.js" ]
+ optimize_webui_excludes = [ "chrome://resources/js/cr.js" ]
optimize_webui_resource_paths_rewrites =
[ "extensions.rollup.js|extensions.js" ]
}
diff --git a/chromium/chrome/browser/resources/extensions/activity_log/activity_log.ts b/chromium/chrome/browser/resources/extensions/activity_log/activity_log.ts
index 338553c208b..d72c4534de1 100644
--- a/chromium/chrome/browser/resources/extensions/activity_log/activity_log.ts
+++ b/chromium/chrome/browser/resources/extensions/activity_log/activity_log.ts
@@ -17,7 +17,7 @@ import '../shared_vars.css.js';
import {CrContainerShadowMixin} from 'chrome://resources/cr_elements/cr_container_shadow_mixin.js';
import {focusWithoutInk} from 'chrome://resources/js/focus_without_ink.js';
import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {afterNextRender, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {navigation, Page} from '../navigation_helper.js';
diff --git a/chromium/chrome/browser/resources/extensions/code_section.ts b/chromium/chrome/browser/resources/extensions/code_section.ts
index c75059e8a7d..4576891a5d2 100644
--- a/chromium/chrome/browser/resources/extensions/code_section.ts
+++ b/chromium/chrome/browser/resources/extensions/code_section.ts
@@ -8,7 +8,7 @@ import 'chrome://resources/polymer/v3_0/paper-styles/color.js';
import './strings.m.js';
import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './code_section.html.js';
diff --git a/chromium/chrome/browser/resources/extensions/detail_view.html b/chromium/chrome/browser/resources/extensions/detail_view.html
index 3f6aa133c21..2d6a27aece5 100644
--- a/chromium/chrome/browser/resources/extensions/detail_view.html
+++ b/chromium/chrome/browser/resources/extensions/detail_view.html
@@ -218,7 +218,8 @@
<iron-icon class="warning-icon" icon="cr:warning"></iron-icon>
<span>
$i18n{itemSuspiciousInstall}
- <a target="_blank" href="$i18n{suspiciousInstallHelpUrl}">
+ <a target="_blank" href="$i18n{suspiciousInstallHelpUrl}"
+ aria-label="$i18n{itemSuspiciousInstallLearnMore}">
$i18n{learnMore}
</a>
</span>
@@ -251,7 +252,8 @@
</iron-icon>
<span class="cr-secondary-text">
$i18n{itemAllowlistWarning}
- <a href="$i18n{enhancedSafeBrowsingWarningHelpUrl}" target="_blank">
+ <a href="$i18n{enhancedSafeBrowsingWarningHelpUrl}" target="_blank"
+ aria-label="$i18n{itemAllowlistWarningLearnMoreLabel}">
$i18n{learnMore}
</a>
</span>
@@ -374,7 +376,8 @@
on-change="onShowAccessRequestsChange_">
<div id="access-toggle-and-link">
<span>$i18n{itemShowAccessRequestsInToolbar}</span>
- <a class="link-icon-button" aria-label="$i18n{learnMore}"
+ <a class="link-icon-button"
+ aria-label="$i18n{itemShowAccessRequestsLearnMore}"
href="$i18n{showAccessRequestsInToolbarLearnMoreLink}"
target="_blank">
<iron-icon icon="cr:help-outline"></iron-icon>
@@ -400,6 +403,9 @@
</div>
</div>
</template>
+ <cr-link-row class="hr"
+ id="siteSettings" label="$i18n{siteSettings}"
+ on-click="onSiteSettingsClick_" external></cr-link-row>
<template is="dom-if" if="[[shouldShowOptionsSection_(data.*)]]">
<div id="options-section">
<template is="dom-if"
diff --git a/chromium/chrome/browser/resources/extensions/detail_view.ts b/chromium/chrome/browser/resources/extensions/detail_view.ts
index d428b42f5d2..c2acfcbc4e0 100644
--- a/chromium/chrome/browser/resources/extensions/detail_view.ts
+++ b/chromium/chrome/browser/resources/extensions/detail_view.ts
@@ -29,7 +29,7 @@ import {CrToggleElement} from 'chrome://resources/cr_elements/cr_toggle/cr_toggl
import {CrTooltipIconElement} from 'chrome://resources/cr_elements/policy/cr_tooltip_icon.js';
import {assert} from 'chrome://resources/js/assert_ts.js';
import {focusWithoutInk} from 'chrome://resources/js/focus_without_ink.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {afterNextRender, DomRepeatEvent, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './detail_view.html.js';
@@ -283,6 +283,12 @@ export class ExtensionsDetailViewElement extends
this.delegate.openUrl(this.data.manifestHomePageUrl);
}
+ private onSiteSettingsClick_() {
+ this.delegate.openUrl(
+ `chrome://settings/content/siteDetails?site=chrome-extension://${
+ this.data.id}`);
+ }
+
private onViewInStoreTap_() {
this.delegate.openUrl(this.data.webStoreUrl);
}
diff --git a/chromium/chrome/browser/resources/extensions/error_page.ts b/chromium/chrome/browser/resources/extensions/error_page.ts
index b2be34765ea..ef92f6be244 100644
--- a/chromium/chrome/browser/resources/extensions/error_page.ts
+++ b/chromium/chrome/browser/resources/extensions/error_page.ts
@@ -18,7 +18,7 @@ import {CrContainerShadowMixin} from 'chrome://resources/cr_elements/cr_containe
import {assert, assertNotReached} from 'chrome://resources/js/assert_ts.js';
import {FocusOutlineManager} from 'chrome://resources/js/focus_outline_manager.js';
import {focusWithoutInk} from 'chrome://resources/js/focus_without_ink.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {afterNextRender, DomRepeatEvent, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './error_page.html.js';
@@ -228,8 +228,15 @@ export class ExtensionsErrorPageElement extends ExtensionsErrorPageElementBase {
break;
case chrome.developerPrivate.ErrorType.RUNTIME:
const runtimeError = error as RuntimeError;
- // slice(1) because pathname starts with a /.
- args.pathSuffix = new URL(runtimeError.source).pathname.slice(1);
+ try {
+ // slice(1) because pathname starts with a /.
+ args.pathSuffix = new URL(runtimeError.source).pathname.slice(1);
+ } catch (e) {
+ // Swallow the invalid URL error and return early. This prevents the
+ // uncaught error from causing a runtime error as seen in
+ // crbug.com/1257170.
+ return;
+ }
args.lineNumber =
runtimeError.stackTrace && runtimeError.stackTrace[0] ?
runtimeError.stackTrace[0].lineNumber :
diff --git a/chromium/chrome/browser/resources/extensions/host_permissions_toggle_list.html b/chromium/chrome/browser/resources/extensions/host_permissions_toggle_list.html
index c09420b14a1..0050815fe0b 100644
--- a/chromium/chrome/browser/resources/extensions/host_permissions_toggle_list.html
+++ b/chromium/chrome/browser/resources/extensions/host_permissions_toggle_list.html
@@ -40,7 +40,7 @@
</style>
<div id="section-heading" hidden$="[[enableEnhancedSiteControls]]">
<span>$i18n{hostPermissionsDescription}</span>
- <a id="linkIconButton" aria-label="$i18n{learnMore}"
+ <a id="linkIconButton" aria-label="$i18n{permissionsLearnMoreLabel}"
href="$i18n{hostPermissionsLearnMoreLink}" target="_blank"
on-click="onLearnMoreClick_">
<iron-icon icon="cr:help-outline"></iron-icon>
@@ -53,7 +53,7 @@
<span class="[[getAllHostsToggleLabelClass_(enableEnhancedSiteControls)]]">
$i18n{itemAllowOnFollowingSites}
</span>
- <a id="linkIconButton" aria-label="$i18n{learnMore}"
+ <a id="linkIconButton" aria-label="$i18n{permissionsLearnMoreLabel}"
href="$i18n{hostPermissionsLearnMoreLink}" target="_blank"
on-click="onLearnMoreClick_"
hidden$="[[!enableEnhancedSiteControls]]">
diff --git a/chromium/chrome/browser/resources/extensions/item.html b/chromium/chrome/browser/resources/extensions/item.html
index 99afc2f277d..cc6c9a15951 100644
--- a/chromium/chrome/browser/resources/extensions/item.html
+++ b/chromium/chrome/browser/resources/extensions/item.html
@@ -238,7 +238,8 @@
<span id="suspicious-warning" aria-describedby="a11yAssociation"
hidden$="[[!data.disableReasons.suspiciousInstall]]">
$i18n{itemSuspiciousInstall}
- <a target="_blank" href="$i18n{suspiciousInstallHelpUrl}">
+ <a target="_blank" href="$i18n{suspiciousInstallHelpUrl}"
+ aria-label="$i18n{itemSuspiciousInstallLearnMore}">
$i18n{learnMore}
</a>
</span>
@@ -259,7 +260,8 @@
</iron-icon>
<span class="cr-secondary-text" aria-describedby="a11yAssociation">
$i18n{itemAllowlistWarning}
- <a href="$i18n{enhancedSafeBrowsingWarningHelpUrl}" target="_blank">
+ <a href="$i18n{enhancedSafeBrowsingWarningHelpUrl}" target="_blank"
+ aria-label="$i18n{itemAllowlistWarningLearnMoreLabel}">
$i18n{learnMore}
</a>
</span>
diff --git a/chromium/chrome/browser/resources/extensions/item_mixin.ts b/chromium/chrome/browser/resources/extensions/item_mixin.ts
index 15291b22258..05c1de1b277 100644
--- a/chromium/chrome/browser/resources/extensions/item_mixin.ts
+++ b/chromium/chrome/browser/resources/extensions/item_mixin.ts
@@ -3,7 +3,7 @@
// found in the LICENSE file.
import {assertNotReached} from 'chrome://resources/js/assert_ts.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {dedupingMixin, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
type Constructor<T> = new (...args: any[]) => T;
diff --git a/chromium/chrome/browser/resources/extensions/item_util.ts b/chromium/chrome/browser/resources/extensions/item_util.ts
index 846bff5e7b4..be65cf5e8c2 100644
--- a/chromium/chrome/browser/resources/extensions/item_util.ts
+++ b/chromium/chrome/browser/resources/extensions/item_util.ts
@@ -5,7 +5,7 @@
import './strings.m.js';
import {assertNotReached} from 'chrome://resources/js/assert_ts.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
export enum SourceType {
WEBSTORE = 'webstore',
diff --git a/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.html b/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.html
index 4446a9c8b9d..0aadb5f5093 100644
--- a/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.html
+++ b/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.html
@@ -78,12 +78,13 @@
<div class="command-entry" command="[[command]]">
<span class="command-name">[[command.description]]</span>
<extensions-shortcut-input delegate="[[delegate]]"
- item="[[item.id]]" shortcut="[[command.keybinding]]"
- command-name="[[command.name]]">
+ item="[[item]]" shortcut="[[command.keybinding]]"
+ command="[[command]]">
</extensions-shortcut-input>
<!-- Binding "value" to triggerScopeChange_ to trigger update
only after CommandScope_ becomes available. -->
<select class="md-select" on-change="onScopeChanged_"
+ aria-label="[[computeScopeAriaLabel_(item, command)]]"
disabled$="[[computeScopeDisabled_(command)]]"
value="[[
triggerScopeChange_(command.scope, CommandScope_)]]">
diff --git a/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.ts b/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.ts
index 34e54fc9184..7bf7d0807f6 100644
--- a/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.ts
+++ b/chromium/chrome/browser/resources/extensions/keyboard_shortcuts.ts
@@ -9,6 +9,7 @@ import 'chrome://resources/polymer/v3_0/paper-styles/color.js';
import './shortcut_input.js';
import {CrContainerShadowMixin} from 'chrome://resources/cr_elements/cr_container_shadow_mixin.js';
+import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {KeyboardShortcutDelegate} from './keyboard_shortcut_delegate.js';
@@ -24,7 +25,7 @@ interface RepeaterEvent<T> extends CustomEvent {
}
const ExtensionsKeyboardShortcutsElementBase =
- CrContainerShadowMixin(PolymerElement);
+ I18nMixin(CrContainerShadowMixin(PolymerElement));
// The UI to display and manage keyboard shortcuts set for extension commands.
export class ExtensionsKeyboardShortcutsElement extends
@@ -80,6 +81,12 @@ export class ExtensionsKeyboardShortcutsElement extends
return !!keybinding;
}
+ private computeScopeAriaLabel_(
+ item: chrome.developerPrivate.ExtensionInfo,
+ command: chrome.developerPrivate.Command): string {
+ return this.i18n('shortcutScopeLabel', command.description, item.name);
+ }
+
/**
* Determines whether to disable the dropdown menu for the command's scope.
*/
diff --git a/chromium/chrome/browser/resources/extensions/kiosk_browser_proxy.ts b/chromium/chrome/browser/resources/extensions/kiosk_browser_proxy.ts
index 52223f6dcb3..82087da4f13 100644
--- a/chromium/chrome/browser/resources/extensions/kiosk_browser_proxy.ts
+++ b/chromium/chrome/browser/resources/extensions/kiosk_browser_proxy.ts
@@ -7,7 +7,7 @@
* the browser.
*/
-import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
+import {sendWithPromise} from 'chrome://resources/js/cr.js';
export interface KioskSettings {
kioskEnabled: boolean;
diff --git a/chromium/chrome/browser/resources/extensions/kiosk_dialog.ts b/chromium/chrome/browser/resources/extensions/kiosk_dialog.ts
index 0fad8aab7e1..cc016426f38 100644
--- a/chromium/chrome/browser/resources/extensions/kiosk_dialog.ts
+++ b/chromium/chrome/browser/resources/extensions/kiosk_dialog.ts
@@ -15,7 +15,7 @@ import {CrCheckboxElement} from 'chrome://resources/cr_elements/cr_checkbox/cr_c
import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
import {CrInputElement} from 'chrome://resources/cr_elements/cr_input/cr_input.js';
import {assert} from 'chrome://resources/js/assert_ts.js';
-import {WebUIListenerMixin} from 'chrome://resources/cr_elements/web_ui_listener_mixin.js';
+import {WebUiListenerMixin} from 'chrome://resources/cr_elements/web_ui_listener_mixin.js';
import {DomRepeatEvent, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {KioskApp, KioskAppSettings, KioskBrowserProxy, KioskBrowserProxyImpl} from './kiosk_browser_proxy.js';
@@ -31,7 +31,7 @@ export interface ExtensionsKioskDialogElement {
};
}
-const ExtensionsKioskDialogElementBase = WebUIListenerMixin(PolymerElement);
+const ExtensionsKioskDialogElementBase = WebUiListenerMixin(PolymerElement);
export class ExtensionsKioskDialogElement extends
ExtensionsKioskDialogElementBase {
@@ -78,10 +78,10 @@ export class ExtensionsKioskDialogElement extends
})
.then(this.setSettings_.bind(this));
- this.addWebUIListener(
+ this.addWebUiListener(
'kiosk-app-settings-changed', this.setSettings_.bind(this));
- this.addWebUIListener('kiosk-app-updated', this.updateApp_.bind(this));
- this.addWebUIListener('kiosk-app-error', this.showError_.bind(this));
+ this.addWebUiListener('kiosk-app-updated', this.updateApp_.bind(this));
+ this.addWebUiListener('kiosk-app-error', this.showError_.bind(this));
this.$.dialog.showModal();
}
diff --git a/chromium/chrome/browser/resources/extensions/manager.ts b/chromium/chrome/browser/resources/extensions/manager.ts
index 848a5b15b31..6cd9f75f6c2 100644
--- a/chromium/chrome/browser/resources/extensions/manager.ts
+++ b/chromium/chrome/browser/resources/extensions/manager.ts
@@ -30,7 +30,7 @@ import './kiosk_dialog.js';
import {CrViewManagerElement} from 'chrome://resources/cr_elements/cr_view_manager/cr_view_manager.js';
import {assert, assertNotReached} from 'chrome://resources/js/assert_ts.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {ActivityLogExtensionPlaceholder} from './activity_log/activity_log.js';
diff --git a/chromium/chrome/browser/resources/extensions/pack_dialog_alert.ts b/chromium/chrome/browser/resources/extensions/pack_dialog_alert.ts
index 2945a8c886c..5b23af5b967 100644
--- a/chromium/chrome/browser/resources/extensions/pack_dialog_alert.ts
+++ b/chromium/chrome/browser/resources/extensions/pack_dialog_alert.ts
@@ -8,7 +8,7 @@ import 'chrome://resources/cr_elements/cr_shared_style.css.js';
import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
import {assert, assertNotReached} from 'chrome://resources/js/assert_ts.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './pack_dialog_alert.html.js';
diff --git a/chromium/chrome/browser/resources/extensions/runtime_host_permissions.html b/chromium/chrome/browser/resources/extensions/runtime_host_permissions.html
index 66e4ae2c324..fa50f333f93 100644
--- a/chromium/chrome/browser/resources/extensions/runtime_host_permissions.html
+++ b/chromium/chrome/browser/resources/extensions/runtime_host_permissions.html
@@ -102,7 +102,8 @@
<span id="section-heading-text">
$i18n{hostPermissionsHeading}
</span>
- <a class="link-icon-button" aria-label="$i18n{learnMore}"
+ <a class="link-icon-button"
+ aria-label="$i18n{permissionsLearnMoreLabel}"
href="$i18n{hostPermissionsLearnMoreLink}" target="_blank"
on-click="onLearnMoreClick_">
<iron-icon icon="cr:help-outline"></iron-icon>
@@ -135,7 +136,8 @@
<span id="new-section-heading-text">
$i18n{newHostPermissionsHeading}
</span>
- <a class="link-icon-button" aria-label="$i18n{learnMore}"
+ <a class="link-icon-button"
+ aria-label="$i18n{permissionsLearnMoreLabel}"
href="$i18n{hostPermissionsLearnMoreLink}" target="_blank"
on-click="onLearnMoreClick_">
<iron-icon icon="cr:help-outline"></iron-icon>
diff --git a/chromium/chrome/browser/resources/extensions/runtime_hosts_dialog.ts b/chromium/chrome/browser/resources/extensions/runtime_hosts_dialog.ts
index 226aabf734a..b7afefd64d2 100644
--- a/chromium/chrome/browser/resources/extensions/runtime_hosts_dialog.ts
+++ b/chromium/chrome/browser/resources/extensions/runtime_hosts_dialog.ts
@@ -15,7 +15,7 @@ import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_butto
import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
import {assert} from 'chrome://resources/js/assert_ts.js';
import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './runtime_hosts_dialog.html.js';
diff --git a/chromium/chrome/browser/resources/extensions/service.ts b/chromium/chrome/browser/resources/extensions/service.ts
index 2b1ea327bff..d6329613f24 100644
--- a/chromium/chrome/browser/resources/extensions/service.ts
+++ b/chromium/chrome/browser/resources/extensions/service.ts
@@ -38,9 +38,7 @@ export class Service implements ServiceInterface {
private eventsToIgnoreOnce_: Set<string> = new Set();
getProfileConfiguration() {
- return new Promise<chrome.developerPrivate.ProfileInfo>(function(resolve) {
- chrome.developerPrivate.getProfileConfiguration(resolve);
- });
+ return chrome.developerPrivate.getProfileConfiguration();
}
getItemStateChangedTarget() {
@@ -63,41 +61,20 @@ export class Service implements ServiceInterface {
}
getExtensionsInfo() {
- return new Promise<chrome.developerPrivate.ExtensionInfo[]>(function(
- resolve) {
- chrome.developerPrivate.getExtensionsInfo(
- {includeDisabled: true, includeTerminated: true}, resolve);
- });
+ return chrome.developerPrivate.getExtensionsInfo(
+ {includeDisabled: true, includeTerminated: true});
}
getExtensionSize(id: string) {
- return new Promise<string>(function(resolve) {
- chrome.developerPrivate.getExtensionSize(id, resolve);
- });
+ return chrome.developerPrivate.getExtensionSize(id);
}
addRuntimeHostPermission(id: string, host: string): Promise<void> {
- return new Promise((resolve, reject) => {
- chrome.developerPrivate.addHostPermission(id, host, () => {
- if (chrome.runtime.lastError) {
- reject(chrome.runtime.lastError.message);
- return;
- }
- resolve();
- });
- });
+ return chrome.developerPrivate.addHostPermission(id, host);
}
removeRuntimeHostPermission(id: string, host: string): Promise<void> {
- return new Promise((resolve, reject) => {
- chrome.developerPrivate.removeHostPermission(id, host, () => {
- if (chrome.runtime.lastError) {
- reject(chrome.runtime.lastError.message);
- return;
- }
- resolve();
- });
- });
+ return chrome.developerPrivate.removeHostPermission(id, host);
}
recordUserAction(metricName: string): void {
@@ -111,17 +88,13 @@ export class Service implements ServiceInterface {
private chooseFilePath_(
selectType: chrome.developerPrivate.SelectType,
fileType: chrome.developerPrivate.FileType): Promise<string> {
- return new Promise(function(resolve, reject) {
- chrome.developerPrivate.choosePath(selectType, fileType, function(path) {
- if (chrome.runtime.lastError &&
- chrome.runtime.lastError.message !==
- 'File selection was canceled.') {
- reject(chrome.runtime.lastError);
- } else {
- resolve(path || '');
- }
- });
- });
+ return chrome.developerPrivate.choosePath(selectType, fileType)
+ .catch(error => {
+ if (error.message !== 'File selection was canceled.') {
+ throw error;
+ }
+ return '';
+ });
}
updateExtensionCommandKeybinding(
@@ -159,29 +132,26 @@ export class Service implements ServiceInterface {
private loadUnpackedHelper_(extraOptions?:
chrome.developerPrivate.LoadUnpackedOptions):
Promise<boolean> {
- return new Promise(function(resolve, reject) {
- const options = Object.assign(
- {
- failQuietly: true,
- populateError: true,
- },
- extraOptions);
-
- chrome.developerPrivate.loadUnpacked(options, (loadError) => {
- if (chrome.runtime.lastError &&
- chrome.runtime.lastError.message !==
- 'File selection was canceled.') {
- throw new Error(chrome.runtime.lastError.message);
- }
- if (loadError) {
- return reject(loadError);
- }
- // The load was successful if there's no lastError indicated (and
- // no loadError, which is checked above).
- const loadSuccessful = typeof chrome.runtime.lastError === 'undefined';
- resolve(loadSuccessful);
- });
- });
+ const options = Object.assign(
+ {
+ failQuietly: true,
+ populateError: true,
+ },
+ extraOptions);
+ return chrome.developerPrivate.loadUnpacked(options)
+ .then(loadError => {
+ if (loadError) {
+ throw loadError;
+ }
+ // The load was successful if there's no loadError.
+ return true;
+ })
+ .catch(error => {
+ if (error.message !== 'File selection was canceled.') {
+ throw error;
+ }
+ return false;
+ });
}
deleteItem(id: string) {
@@ -251,18 +221,13 @@ export class Service implements ServiceInterface {
}
reloadItem(id: string): Promise<void> {
- return new Promise(function(resolve, reject) {
- chrome.developerPrivate.reload(
- id, {failQuietly: true, populateErrorForUnpacked: true},
- (loadError) => {
- if (loadError) {
- reject(loadError);
- return;
- }
-
- resolve();
- });
- });
+ return chrome.developerPrivate
+ .reload(id, {failQuietly: true, populateErrorForUnpacked: true})
+ .then(loadError => {
+ if (loadError) {
+ throw loadError;
+ }
+ });
}
repairItem(id: string): void {
@@ -309,12 +274,9 @@ export class Service implements ServiceInterface {
chrome.developerPrivate.FileType.PEM);
}
- packExtension(
- rootPath: string, keyPath: string, flag?: number,
- callback?:
- (response: chrome.developerPrivate.PackDirectoryResponse) => void):
- void {
- chrome.developerPrivate.packDirectory(rootPath, keyPath, flag, callback);
+ packExtension(rootPath: string, keyPath: string, flag?: number):
+ Promise<chrome.developerPrivate.PackDirectoryResponse> {
+ return chrome.developerPrivate.packDirectory(rootPath, keyPath, flag);
}
updateAllExtensions(extensions: chrome.developerPrivate.ExtensionInfo[]) {
@@ -323,11 +285,9 @@ export class Service implements ServiceInterface {
* user is prompted to try updating the broken extension using loadUnpacked
* and we skip reloading the remaining local extensions.
*/
- return new Promise<void>((resolve) => {
- chrome.developerPrivate.autoUpdate(() => resolve());
- chrome.metricsPrivate.recordUserAction('Options_UpdateExtensions');
- })
- .then(() => {
+ return chrome.developerPrivate.autoUpdate().then(
+ () => {
+ chrome.metricsPrivate.recordUserAction('Options_UpdateExtensions');
return new Promise<void>((resolve, reject) => {
const loadLocalExtensions = async () => {
for (const extension of extensions) {
@@ -359,9 +319,7 @@ export class Service implements ServiceInterface {
requestFileSource(args: chrome.developerPrivate.RequestFileSourceProperties):
Promise<chrome.developerPrivate.RequestFileSourceResponse> {
- return new Promise(function(resolve) {
- chrome.developerPrivate.requestFileSource(args, resolve);
- });
+ return chrome.developerPrivate.requestFileSource(args);
}
showInFolder(id: string) {
@@ -370,14 +328,12 @@ export class Service implements ServiceInterface {
getExtensionActivityLog(extensionId: string):
Promise<chrome.activityLogPrivate.ActivityResultSet> {
- return new Promise(function(resolve) {
- chrome.activityLogPrivate.getExtensionActivities(
- {
- activityType: chrome.activityLogPrivate.ExtensionActivityFilter.ANY,
- extensionId: extensionId,
- },
- resolve);
- });
+ return chrome.activityLogPrivate.getExtensionActivities(
+ {
+ activityType: chrome.activityLogPrivate.ExtensionActivityFilter.ANY,
+ extensionId: extensionId,
+ },
+ );
}
getFilteredExtensionActivityLog(extensionId: string, searchTerm: string) {
@@ -407,10 +363,8 @@ export class Service implements ServiceInterface {
const promises:
Array<Promise<chrome.activityLogPrivate.ActivityResultSet>> =
activityLogFilters.map(
- filter => new Promise(function(resolve) {
- chrome.activityLogPrivate.getExtensionActivities(
- filter, resolve);
- }));
+ filter =>
+ chrome.activityLogPrivate.getExtensionActivities(filter));
return Promise.all(promises).then(results => {
// We may have results that are present in one or more searches, so
@@ -428,16 +382,11 @@ export class Service implements ServiceInterface {
}
deleteActivitiesById(activityIds: string[]): Promise<void> {
- return new Promise(function(resolve) {
- chrome.activityLogPrivate.deleteActivities(activityIds, resolve);
- });
+ return chrome.activityLogPrivate.deleteActivities(activityIds);
}
deleteActivitiesFromExtension(extensionId: string): Promise<void> {
- return new Promise(function(resolve) {
- chrome.activityLogPrivate.deleteActivitiesByExtension(
- extensionId, resolve);
- });
+ return chrome.activityLogPrivate.deleteActivitiesByExtension(extensionId);
}
getOnExtensionActivity(): ChromeEvent<
@@ -471,33 +420,24 @@ export class Service implements ServiceInterface {
}
getUserSiteSettings(): Promise<chrome.developerPrivate.UserSiteSettings> {
- return new Promise(function(resolve) {
- chrome.developerPrivate.getUserSiteSettings(resolve);
- });
+ return chrome.developerPrivate.getUserSiteSettings();
}
addUserSpecifiedSites(
siteSet: chrome.developerPrivate.SiteSet,
hosts: string[]): Promise<void> {
- return new Promise(function(resolve) {
- chrome.developerPrivate.addUserSpecifiedSites({siteSet, hosts}, resolve);
- });
+ return chrome.developerPrivate.addUserSpecifiedSites({siteSet, hosts});
}
removeUserSpecifiedSites(
siteSet: chrome.developerPrivate.SiteSet,
hosts: string[]): Promise<void> {
- return new Promise(function(resolve) {
- chrome.developerPrivate.removeUserSpecifiedSites(
- {siteSet, hosts}, resolve);
- });
+ return chrome.developerPrivate.removeUserSpecifiedSites({siteSet, hosts});
}
getUserAndExtensionSitesByEtld():
Promise<chrome.developerPrivate.SiteGroup[]> {
- return new Promise(function(resolve) {
- chrome.developerPrivate.getUserAndExtensionSitesByEtld(resolve);
- });
+ return chrome.developerPrivate.getUserAndExtensionSitesByEtld();
}
getMatchingExtensionsForSite(site: string):
@@ -516,6 +456,13 @@ export class Service implements ServiceInterface {
});
}
+ updateSiteAccess(
+ site: string,
+ updates: chrome.developerPrivate.ExtensionSiteAccessUpdate[]):
+ Promise<void> {
+ return chrome.developerPrivate.updateSiteAccess(site, updates);
+ }
+
static getInstance(): ServiceInterface {
return instance || (instance = new Service());
}
diff --git a/chromium/chrome/browser/resources/extensions/shortcut_input.html b/chromium/chrome/browser/resources/extensions/shortcut_input.html
index d4363f5c782..2ce2ad12ff1 100644
--- a/chromium/chrome/browser/resources/extensions/shortcut_input.html
+++ b/chromium/chrome/browser/resources/extensions/shortcut_input.html
@@ -22,6 +22,7 @@
</style>
<div id="main">
<cr-input id="input" readonly="[[readonly_]]"
+ aria-label="[[computeInputAriaLabel_(item, command)]]"
placeholder="[[computePlaceholder_(readonly_)]]"
invalid="[[getIsInvalid_(error_)]]"
error-message="[[getErrorString_(error_,
@@ -29,7 +30,8 @@
'$i18nPolymer{shortcutTooManyModifiers}',
'$i18nPolymer{shortcutNeedCharacter}')]]"
value="[[computeText_(shortcut)]]">
- <cr-icon-button id="edit" aria-label="$i18nPolymer{editShortcut}"
+ <cr-icon-button id="edit"
+ aria-label="[[computeEditButtonAriaLabel_(item, command)]]"
slot="suffix" class="icon-edit no-overlap"
on-click="onEditClick_"></cr-icon-button>
</cr-input>
diff --git a/chromium/chrome/browser/resources/extensions/shortcut_input.ts b/chromium/chrome/browser/resources/extensions/shortcut_input.ts
index b0d169e238a..28aa6bc54a9 100644
--- a/chromium/chrome/browser/resources/extensions/shortcut_input.ts
+++ b/chromium/chrome/browser/resources/extensions/shortcut_input.ts
@@ -49,16 +49,8 @@ export class ExtensionsShortcutInputElement extends
static get properties() {
return {
delegate: Object,
-
- item: {
- type: String,
- value: '',
- },
-
- commandName: {
- type: String,
- value: '',
- },
+ item: Object,
+ command: Object,
shortcut: {
type: String,
@@ -75,7 +67,6 @@ export class ExtensionsShortcutInputElement extends
value: ShortcutError.NO_ERROR,
},
-
readonly_: {
type: Boolean,
value: true,
@@ -90,8 +81,8 @@ export class ExtensionsShortcutInputElement extends
}
delegate: KeyboardShortcutDelegate;
- item: string;
- commandName: string;
+ item: chrome.developerPrivate.ExtensionInfo;
+ command: chrome.developerPrivate.Command;
shortcut: string;
private capturing_: boolean;
private error_: ShortcutError;
@@ -249,7 +240,17 @@ export class ExtensionsShortcutInputElement extends
private commitPending_() {
this.shortcut = this.pendingShortcut_;
this.delegate.updateExtensionCommandKeybinding(
- this.item, this.commandName, this.shortcut);
+ this.item.id, this.command.name, this.shortcut);
+ }
+
+ private computeInputAriaLabel_(): string {
+ return this.i18n(
+ 'editShortcutInputLabel', this.command.description, this.item.name);
+ }
+
+ private computeEditButtonAriaLabel_(): string {
+ return this.i18n(
+ 'editShortcutButtonLabel', this.command.description, this.item.name);
}
private computePlaceholder_(): string {
diff --git a/chromium/chrome/browser/resources/extensions/shortcut_util.ts b/chromium/chrome/browser/resources/extensions/shortcut_util.ts
index 30a07081803..5a392fd7eb7 100644
--- a/chromium/chrome/browser/resources/extensions/shortcut_util.ts
+++ b/chromium/chrome/browser/resources/extensions/shortcut_util.ts
@@ -3,7 +3,7 @@
// found in the LICENSE file.
import {assertNotReached} from 'chrome://resources/js/assert_ts.js';
-import {isChromeOS, isMac} from 'chrome://resources/js/cr.m.js';
+import {isChromeOS, isMac} from 'chrome://resources/js/platform.js';
export enum Key {
diff --git a/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.html b/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.html
index 4abbbb093a2..49e92f0c1f8 100644
--- a/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.html
+++ b/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.html
@@ -75,10 +75,9 @@
<div class="extension-row">
<img class="extension-icon" src="[[item.iconUrl]]" alt="">
<span class="extension-name">[[item.name]]</span>
- <!-- TODO(crbug.com/1253673): Enable these after implementing an API
- method to edit site access for multiple extensions. -->
<select class="extension-host-access md-select"
- value="[[item.siteAccess]]" disabled>
+ on-change="onHostAccessChange_"
+ value="[[getExtensionHostAccess_(item.id, item.siteAccess)]]">
<option value="[[hostAccessEnum_.ON_CLICK]]">
$i18n{sitePermissionsOnClick}
</option>
diff --git a/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.ts b/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.ts
index 4975b8c1b7e..410a10cd2c1 100644
--- a/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.ts
+++ b/chromium/chrome/browser/resources/extensions/site_permissions_edit_permissions_dialog.ts
@@ -14,7 +14,7 @@ import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_butto
import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
import {assert} from 'chrome://resources/js/assert_ts.js';
-import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {DomRepeatEvent, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './site_permissions_edit_permissions_dialog.html.js';
import {SiteSettingsDelegate} from './site_settings_mixin.js';
@@ -125,8 +125,23 @@ export class SitePermissionsEditPermissionsDialogElement extends
Map<string, chrome.developerPrivate.ExtensionInfo>;
private extensionSiteAccessData_: ExtensionSiteAccessInfo[];
+ // Tracks any unsaved changes to HostAccess for each extension made by
+ // changing the value in the ".extension-host-access" <select> element. Any
+ // values in here should be different than the HostAccess for the extension
+ // inside `extensionSiteAccessData_`.
+ private unsavedExtensionsIdToHostAccess_:
+ Map<string, chrome.developerPrivate.HostAccess>;
+
+ constructor() {
+ super();
+ this.unsavedExtensionsIdToHostAccess_ = new Map();
+ }
+
override ready() {
super.ready();
+
+ // Setting this to an initial value will trigger a call to
+ // `updateExtensionSiteAccessData_`.
this.siteSet_ = this.originalSiteSet;
// If `this.site` matches subdomains, then it should not be a user specified
@@ -134,8 +149,6 @@ export class SitePermissionsEditPermissionsDialogElement extends
assert(
!this.matchesSubdomains_() ||
this.originalSiteSet === EXTENSION_SPECIFIED);
-
- this.updateExtensionSiteAccessData_(this.siteSet_);
}
private onExtensionsUpdated_(extensions:
@@ -171,16 +184,32 @@ export class SitePermissionsEditPermissionsDialogElement extends
}
const siteToCheck =
- this.isSiteHostOnly_() ? `*://${this.site}/` : this.site;
+ this.isSiteHostOnly_() ? `*://${this.site}/` : `${this.site}/`;
+
const matchingExtensionsInfo =
await this.delegate.getMatchingExtensionsForSite(siteToCheck);
+
const extensionSiteAccessData: ExtensionSiteAccessInfo[] = [];
matchingExtensionsInfo.forEach(({id, siteAccess}) => {
assert(this.extensionsIdToInfo_.has(id));
const {name, iconUrl} = this.extensionsIdToInfo_.get(id)!;
extensionSiteAccessData.push({id, name, iconUrl, siteAccess});
+
+ // Remove the unsaved HostAccess from `unsavedExtensionsIdToHostAccess_`
+ // if it is now the same as `siteAccess`.
+ if (this.unsavedExtensionsIdToHostAccess_.get(id) === siteAccess) {
+ this.unsavedExtensionsIdToHostAccess_.delete(id);
+ }
});
+ // Remove any HostAccess from `unsavedExtensionsIdToHostAccess_` for
+ // extensions that are no longer in `extensionSiteAccessData`.
+ for (const extensionId of this.unsavedExtensionsIdToHostAccess_.keys()) {
+ if (!this.extensionsIdToInfo_.has(extensionId)) {
+ this.unsavedExtensionsIdToHostAccess_.delete(extensionId);
+ }
+ }
+
this.extensionSiteAccessData_ = extensionSiteAccessData;
}
@@ -188,30 +217,38 @@ export class SitePermissionsEditPermissionsDialogElement extends
this.$.dialog.cancel();
}
- private onSubmitClick_() {
- if (this.siteSet_ === this.originalSiteSet) {
- this.$.dialog.close();
- return;
+ private async onSubmitClick_() {
+ if (this.siteSet_ !== this.originalSiteSet) {
+ // If `this.site` has a scheme (and can be considered a full url), use it
+ // as is. Otherwise if `this.site` is just a host, append the http and
+ // https schemes to it.
+ const sitesToChange = this.isSiteHostOnly_() ?
+ [`http://${this.site}`, `https://${this.site}`] :
+ [this.site];
+ if (this.siteSet_ === EXTENSION_SPECIFIED) {
+ await this.delegate.removeUserSpecifiedSites(
+ this.originalSiteSet, sitesToChange);
+ } else {
+ await this.delegate.addUserSpecifiedSites(this.siteSet_, sitesToChange);
+ }
}
- // If `this.site` has a scheme (and can be considered a full url), use it
- // as is. Otherwise if `this.site` is just a host, append the http and https
- // schemes to it.
- const sitesToChange = this.isSiteHostOnly_() ?
- [`http://${this.site}`, `https://${this.site}`] :
- [this.site];
- if (this.siteSet_ === EXTENSION_SPECIFIED) {
- this.delegate
- .removeUserSpecifiedSites(this.originalSiteSet, sitesToChange)
- .then(() => {
- this.$.dialog.close();
- });
- } else {
- this.delegate.addUserSpecifiedSites(this.siteSet_, sitesToChange)
- .then(() => {
- this.$.dialog.close();
- });
+ if (this.siteSet_ === EXTENSION_SPECIFIED &&
+ this.unsavedExtensionsIdToHostAccess_.size) {
+ const updates: chrome.developerPrivate.ExtensionSiteAccessUpdate[] = [];
+ this.unsavedExtensionsIdToHostAccess_.forEach((val, key) => {
+ updates.push({id: key, siteAccess: val});
+ });
+
+ // For changing extensions' site access, first. the wildcard path "/*" is
+ // added to the end. Then, if the site does not specify a scheme, use the
+ // wildcard scheme.
+ const siteToUpdate =
+ this.isSiteHostOnly_() ? `*://${this.site}/` : `${this.site}/`;
+ await this.delegate.updateSiteAccess(siteToUpdate, updates);
}
+
+ this.$.dialog.close();
}
private computeDialogTitle_(): string {
@@ -242,6 +279,33 @@ export class SitePermissionsEditPermissionsDialogElement extends
return this.matchesSubdomains_() ? 'site-access-list' :
'indented-site-access-list';
}
+
+ // Returns the value to be displayed for the <select> element for the
+ // extension's host access. This shows the unsaved HostAccess value that was
+ // changed by the user. Otherwise, show the preexisting HostAccess value.
+ private getExtensionHostAccess_(
+ extensionId: string,
+ originalSiteAccess: chrome.developerPrivate.HostAccess):
+ chrome.developerPrivate.HostAccess {
+ return this.unsavedExtensionsIdToHostAccess_.get(extensionId) ||
+ originalSiteAccess;
+ }
+
+ private onHostAccessChange_(e: DomRepeatEvent<ExtensionSiteAccessInfo>) {
+ const selectMenu = this.shadowRoot!.querySelectorAll<HTMLSelectElement>(
+ '.extension-host-access')![e.model.index];
+ assert(selectMenu);
+
+ const originalSiteAccess = e.model.item.siteAccess;
+ const newSiteAccess =
+ selectMenu.value as chrome.developerPrivate.HostAccess;
+
+ if (originalSiteAccess === newSiteAccess) {
+ this.unsavedExtensionsIdToHostAccess_.delete(e.model.item.id);
+ } else {
+ this.unsavedExtensionsIdToHostAccess_.set(e.model.item.id, newSiteAccess);
+ }
+ }
}
declare global {
diff --git a/chromium/chrome/browser/resources/extensions/site_permissions_edit_url_dialog.ts b/chromium/chrome/browser/resources/extensions/site_permissions_edit_url_dialog.ts
index 7f2aeb8be6e..e02992fbd7e 100644
--- a/chromium/chrome/browser/resources/extensions/site_permissions_edit_url_dialog.ts
+++ b/chromium/chrome/browser/resources/extensions/site_permissions_edit_url_dialog.ts
@@ -11,7 +11,7 @@ import './strings.m.js';
import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_button.js';
import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
import {assert} from 'chrome://resources/js/assert_ts.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './site_permissions_edit_url_dialog.html.js';
diff --git a/chromium/chrome/browser/resources/extensions/site_permissions_site_group.ts b/chromium/chrome/browser/resources/extensions/site_permissions_site_group.ts
index 8b2ab8dc0b4..514518e12a5 100644
--- a/chromium/chrome/browser/resources/extensions/site_permissions_site_group.ts
+++ b/chromium/chrome/browser/resources/extensions/site_permissions_site_group.ts
@@ -12,7 +12,7 @@ import './shared_vars.css.js';
import './site_permissions_edit_permissions_dialog.js';
import {assert} from 'chrome://resources/js/assert_ts.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {DomRepeatEvent, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './site_permissions_site_group.html.js';
diff --git a/chromium/chrome/browser/resources/extensions/site_settings_mixin.ts b/chromium/chrome/browser/resources/extensions/site_settings_mixin.ts
index 31599420ca6..8f1a08bd8dc 100644
--- a/chromium/chrome/browser/resources/extensions/site_settings_mixin.ts
+++ b/chromium/chrome/browser/resources/extensions/site_settings_mixin.ts
@@ -25,6 +25,10 @@ export interface SiteSettingsDelegate {
Promise<chrome.developerPrivate.SiteGroup[]>;
getMatchingExtensionsForSite(site: string):
Promise<chrome.developerPrivate.MatchingExtensionInfo[]>;
+ updateSiteAccess(
+ site: string,
+ updates: chrome.developerPrivate.ExtensionSiteAccessUpdate[]):
+ Promise<void>;
getUserSiteSettingsChangedTarget():
ChromeEvent<(settings: chrome.developerPrivate.UserSiteSettings) => void>;
}
diff --git a/chromium/chrome/browser/resources/extensions/toolbar.ts b/chromium/chrome/browser/resources/extensions/toolbar.ts
index 01d8a81fe9c..69bbef643fd 100644
--- a/chromium/chrome/browser/resources/extensions/toolbar.ts
+++ b/chromium/chrome/browser/resources/extensions/toolbar.ts
@@ -14,7 +14,7 @@ import './pack_dialog.js';
import {getToastManager} from 'chrome://resources/cr_elements/cr_toast/cr_toast_manager.js';
import {CrToggleElement} from 'chrome://resources/cr_elements/cr_toggle/cr_toggle.js';
import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
-import {listenOnce} from 'chrome://resources/js/util.js';
+import {listenOnce} from 'chrome://resources/js/util_ts.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {getTemplate} from './toolbar.html.js';