Jake,

2010/11/10 Jake Goldsborough <[email protected]>

> Hey Pedro et al, thanks for the emails back.


Thanks for contacting us! :-)



> You can see the code I've used here. http://pastebin.com/fSucGCr9
>
> I've started working on this plugin and am running into some trouble.
> The API shows calling an external js file in the background.html so I
> created contextmenu.js.
>

In order to make extensions as secure as possible in Chrome, the
communication with the page is very restricted. Background pages can only
talk to Content Scripts, and Content Scripts can talk to page, but only
using the DOM (not JavaScript directly):

Background pages ---> Content Scripts ---> page scripts (Firebug Lite)

I suggest reading this to see how to communicate with the page:
http://code.google.com/chrome/extensions/trunk/content_scripts.html#host-page-communication

Is also good to consider the security risks:
http://code.google.com/chrome/extensions/trunk/messaging.html#security-considerations

I made a confusion in my last post. The correct order should be:

1) Find the element to be inspected - listen to "oncontentmenu" events in
the *page* to track the clicked element (running the *page*).

2) Detect context menu click - use Chrome's API to detect context-menu click
(running on a *background page*) and send a message to the *content script*
indicating that a click happened.

3) Communicate with the page - from the *content script* send a message to
the *page* indicating that a context-menu click happened.

4) Select the element in HTML Panel - running on the *page*, listen to the
*content script" message indicating a context-menu click, and execute the
following code to select the element:

Firebug.chrome.selectPanel("HTML");
Firebug.HTML.select(elementToBeInspected);



> I've got the Firebug Lite item showing up in the context menu.
> I have tried to send a message onclick to both the content script and
> background pages but neither seem to work. I've put a test alert and it
> never shows up.
> I also am not really sure how to listen for a context menu click. I could
> only find api functions to create delete and update.
>

Yes, I tried your code and it won't work because Firebug Lite is running at
the page, the the context menu action is handled at the background page.

Also, if you're creating a new extension (judging by the pastebin sample)
you'll have problems too because there's more work to do to communicate from
one extension to another. I suggest is to work on Firebug Lite extension's
code instead, and then when you get a working version without bugs I'll
revise the code and commit it our repository, making it available to our
users in the next beta release. Of course, I'll give you the proper credit
for the patch. ;-)


This is my first go at a chrome extension so any feedback or pointers would
> be greatly appreciated.
>

There are a few more things to consider but let's concentrate on the most
important ones. We need to handle the case when Firebug Lite is inactive,
which is related to this issue:

http://code.google.com/p/fbug/issues/detail?id=3166

The problem is that we need some kind of "Browser Help Object" that will act
even when Firebug Lite is inactive. This BHO will basically handle these
cases:

* If a user press F12 when Firebug Lite is inactive, it should activate it
and open.
* If a user press CTRL+SHIFT+C when Firebug Lite is inactive, it should
activate it and start inspecting.
* If a user select "Inspect element" from context-menu when Firebug Lite is
inactive, it should activate it and inspect the clicked element.

There are a few things we need to change in Firebug Lite to make it easier
to solve the related issues: 1) split the current content script file in two
(a small BHO-like file, and the Firebug Lite app file); 2) create a API
method to dispatch messages from Chrome to Firebug (there is currently only
a Firebug to Chrome method); 3) Make Chrome extension work in Development
Mode [*] to make the development of Chrome specific code easier (without
requiring building the project).

[*] http://getfirebug.com/firebuglite#DevelopmentMode

#1 and #2 are easy and I'll commit a patch now so it will be much easier to
you to proceed from that.

#3 will require changing the location of the manifest.json file so I need to
rethink how Chrome extension will be built and deployed, so I want to think
carefully.

regards,

Pedro Simonetti.


Thanks for giving me the chance to help contribute back. I'm not sure what
> I'd do without Firebug, and Firebug Lite really makes it possible to develop
> in Chrome.
>
>
> R. Jacob Goldsborough
> http://www.rjgoldsborough.com
> Mobile == +1.202.713.5894
> Drupal user #469148 <http://drupal.org/user/469148>
> Skype == rjgoldsborough
>  IRC nick == rjgoldsborough
>
>
>
> On Mon, Nov 8, 2010 at 23:17, Pedro Simonetti Garcia <
> [email protected]> wrote:
>
>>
>> 2010/11/8 rjgoldsborough <[email protected]>
>>
>> Hi all. I came across
>>> http://code.google.com/chrome/extensions/trunk/contextMenus.html
>>> and was wondering if there are any plans to integrate this with
>>> firebug. It would be very handy to be able to right click and select
>>> "Firebug" just like in Firefox.
>>
>>
>> Sure, as Steven pointed please star the following issue to get notified
>> about our progress:
>>
>> http://code.google.com/p/fbug/issues/detail?id=3579
>>
>>
>>> I would be willing to give it a shot,
>>>
>>> but I didn't find anywhere to download the current code. Thanks!
>>>
>>
>> Great! You can find a link to download [1] at our site [2], but as
>> Sebastian suggested if you're going to work with Firebug Lite code it is
>> recommended to download the code directly from our repository:
>>
>> http://fbug.googlecode.com/svn/lite/branches/firebug1.4/test/
>>
>> The actual code for the extension is under "/build/chrome-extension".
>>
>> I'm focused right now on complex core changes in Firebug Lite so I'll be
>> glad to see contributions from the community so I can stay focused on the
>> hard work. I'm open to give you instructions how to implement this, so if
>> you need help just ask.
>>
>> Implement this feature is easy, but not so easy as one might think. Chrome
>> does not include a reference to the clicked element that activated the
>> content menu so you'll have to find that element first, and note that the
>> context menu is handled at a background page and the Firebug Lite is running
>> at the page.
>>
>> 1) Find the element to be inspected - listen to "oncontentmenu" events in
>> the page to track the clicked element (running on a content script).
>>
>> 2) Detect context menu click - use Chrome's API to detect context-menu
>> click (running on a background page) and send a message to the content
>> script indicating that a click happened.
>>
>> 3) Select the element in HTML Panel - running on a content script, listen
>> to background's page message indicating a context-menu click, and execute
>> the following code to select the element:
>>
>> Firebug.chrome.selectPanel("HTML");
>> Firebug.HTML.select(elementToBeInspected);
>>
>> If you need help understanding Firebug Lite code, just ask.
>>
>> regards,
>>
>> Pedro Simonetti.
>>
>>
>> [1] https://getfirebug.com/releases/lite/latest/firebug-lite.tar.tgz
>> [2] http://getfirebug.com/firebuglite#Stable
>>
>>
>>
>>
>>
>>>
>>> --
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "Firebug" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<firebug%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/firebug?hl=en.
>>>
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Firebug" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<firebug%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/firebug?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Firebug" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<firebug%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/firebug?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Firebug" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/firebug?hl=en.

Reply via email to