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

Issue 2963012: Only setup the contextMenus listener if we're actually using contextMenus.... (Closed)

Created:
10 years, 5 months ago by asargent_no_longer_on_chrome
Modified:
9 years, 7 months ago
CC:
chromium-reviews, pam+watch_chromium.org, Aaron Boodman, Erik does not do reviews, darin-cc_chromium.org, brettw-cc_chromium.org
Visibility:
Public.

Description

Only setup the contextMenus listener if we're actually using contextMenus. Erik ran into a problem related to this while working on some changes to permissions handling for event listening. BUG=none TEST=Context Menus API onclick callbacks should work normally. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=52431

Patch Set 1 : '' #

Unified diffs Side-by-side diffs Delta from patch set Stats (+15 lines, -8 lines) Patch
M chrome/renderer/resources/extension_process_bindings.js View 2 chunks +15 lines, -8 lines 0 comments Download

Messages

Total messages: 2 (0 generated)
asargent_no_longer_on_chrome
10 years, 5 months ago (2010-07-14 22:09:54 UTC) #1
Erik does not do reviews
10 years, 5 months ago (2010-07-14 22:29:46 UTC) #2
LGTM

On Wed, Jul 14, 2010 at 3:09 PM, <asargent@chromium.org> wrote:

> Reviewers: Erik Kay,
>
> Description:
> Only setup the contextMenus listener if we're actually using contextMenus.
>
> Erik ran into a problem related to this while working on some changes to
> permissions handling for event listening.
>
> BUG=none
> TEST=Context Menus API onclick callbacks should work normally.
>
>
> Please review this at http://codereview.chromium.org/2963012/show
>
> SVN Base: svn://chrome-svn/chrome/trunk/src/
>
> Affected files:
>  M     chrome/renderer/resources/extension_process_bindings.js
>
>
> Index: chrome/renderer/resources/extension_process_bindings.js
> ===================================================================
> --- chrome/renderer/resources/extension_process_bindings.js     (revision
> 52384)
> +++ chrome/renderer/resources/extension_process_bindings.js     (working
> copy)
> @@ -268,15 +268,21 @@
>     chromeHidden.contextMenus.handlers = {};
>     var eventName = "contextMenus/" + extensionId;
>     chromeHidden.contextMenus.event = new chrome.Event(eventName);
> -    chromeHidden.contextMenus.event.addListener(function() {
> -      // An extension context menu item has been clicked on - fire the
> onclick
> -      // if there is one.
> -      var id = arguments[0].menuItemId;
> -      var onclick = chromeHidden.contextMenus.handlers[id];
> -      if (onclick) {
> -        onclick.apply(onclick, arguments);
> +    chromeHidden.contextMenus.ensureListenerSetup = function() {
> +      if (chromeHidden.contextMenus.listening) {
> +        return;
>       }
> -    });
> +      chromeHidden.contextMenus.listening = true;
> +      chromeHidden.contextMenus.event.addListener(function() {
> +        // An extension context menu item has been clicked on - fire the
> onclick
> +        // if there is one.
> +        var id = arguments[0].menuItemId;
> +        var onclick = chromeHidden.contextMenus.handlers[id];
> +        if (onclick) {
> +          onclick.apply(onclick, arguments);
> +        }
> +      });
> +    };
>   }
>
>   function setupOmniboxEvents(extensionId) {
> @@ -616,6 +622,7 @@
>       // Set up the onclick handler if we were passed one in the request.
>       var onclick = request.args.length ? request.args[0].onclick : null;
>       if (onclick) {
> +        chromeHidden.contextMenus.ensureListenerSetup();
>         chromeHidden.contextMenus.handlers[id] = onclick;
>       }
>     };
>
>
>

Powered by Google App Engine
This is Rietveld 408576698