| Index: ios/web/web_state/js/resources/dialog_overrides.js
|
| diff --git a/ios/web/web_state/js/resources/dialog_overrides.js b/ios/web/web_state/js/resources/dialog_overrides.js
|
| index a127becd3823a6e070d994b34a73f3bca416032b..a8f31c7d934ae89465cbbd546e79c17642946550 100644
|
| --- a/ios/web/web_state/js/resources/dialog_overrides.js
|
| +++ b/ios/web/web_state/js/resources/dialog_overrides.js
|
| @@ -6,49 +6,37 @@ goog.provide('__crWeb.dialogOverrides');
|
|
|
| goog.require('__crWeb.core');
|
|
|
| -// Namespace for this module.
|
| __gCrWeb.dialogOverrides = {};
|
|
|
| -// Beginning of anonymous object.
|
| (function() {
|
| /*
|
| - * Install a wrapper around functions displaying dialogs in order to catch
|
| - * code displaying dialog.
|
| + * Installs a wrapper around geolocation functions displaying dialogs in order
|
| + * to control their suppression.
|
| *
|
| * Since the Javascript on the page may cache the value of those functions
|
| * and invoke them later, we must only install the wrapper once and change
|
| * their behaviour when required.
|
| *
|
| - * Returns a function that allows changing the value of the two booleans
|
| - * |suppressDialogs| and |notifyAboutDialogs| that are tested by the wrappers.
|
| + * Returns a function that allows changing the value of
|
| + * |suppressGeolocationDialogs| that is tested by the wrappers.
|
| */
|
| - var installDialogOverridesMethods = function() {
|
| - var suppressDialogs = false;
|
| - var notifyAboutDialogs = false;
|
| + var installGeolocationDialogOverridesMethods = function() {
|
| + var suppressGeolocationDialogs = false;
|
|
|
| - // Returns a wrapper function around |originalDialog|. The wrapper may
|
| - // suppress the dialog and notify host about show/suppress.
|
| + // Returns a wrapper function around original dialog function. The wrapper
|
| + // may suppress the dialog and notify host.
|
| var makeDialogWrapper = function(originalDialogGetter) {
|
| return function() {
|
| - if (!suppressDialogs) {
|
| + if (suppressGeolocationDialogs) {
|
| + __gCrWeb.message.invokeOnHost({
|
| + 'command': 'geolocationDialog.suppressed'
|
| + });
|
| + } else {
|
| return originalDialogGetter().apply(null, arguments);
|
| - } else if (notifyAboutDialogs) {
|
| - __gCrWeb.message.invokeOnHost({'command': 'dialog.suppressed'});
|
| }
|
| };
|
| };
|
|
|
| - // Install wrapper around the following properties of |window|.
|
| - var wrappedFunctionNames = ['alert', 'confirm', 'prompt', 'open'];
|
| - var len = wrappedFunctionNames.length;
|
| - for (var i = 0; i < len; i++) {
|
| - (function(wrappedFunctionName) {
|
| - var wrappedDialogMethod = window[wrappedFunctionName];
|
| - window[wrappedFunctionName] = makeDialogWrapper(
|
| - function() { return wrappedDialogMethod; });
|
| - })(wrappedFunctionNames[i]);
|
| - }
|
| -
|
| // Reading or writing to the property 'geolocation' too early breaks
|
| // the API. Make a copy of navigator and stub in the required methods
|
| // without touching the property. See crbug.com/280818 for more
|
| @@ -99,16 +87,14 @@ __gCrWeb.dialogOverrides = {};
|
| /** @suppress {const} */
|
| navigator = stubNavigator;
|
|
|
| - // Returns the closure allowing to change |suppressDialogs| and
|
| - // |notifyAboutDialogs| variables.
|
| - return function(setEnabled, setNotify) {
|
| - suppressDialogs = setEnabled;
|
| - notifyAboutDialogs = setNotify;
|
| + // Returns the closure allowing to change |suppressGeolocationDialogs|.
|
| + return function(setEnabled) {
|
| + suppressGeolocationDialogs = setEnabled;
|
| };
|
| };
|
|
|
| - // Override certain methods that produce dialogs. This needs to be installed
|
| - // after other window methods overrides.
|
| - __gCrWeb['setSuppressDialogs'] = installDialogOverridesMethods();
|
| + // Override geolocation methods that produce dialogs.
|
| + __gCrWeb['setSuppressGeolocationDialogs'] =
|
| + installGeolocationDialogOverridesMethods();
|
|
|
| }()); // End of anonymous object
|
|
|