Firefox Gecko SDK : NPP_GetValue not getting called - firefox

I have tried out the NPRuntime sample provided with the Gecko SDK 1.9.1 with the help of this link.
It works perfectly fine with Firefox 3.6.
Following the above steps I created a new scripting plugin (npmyplugin.dll). I am currently placing npmyplugin.dll in a folder other than Firefox/plugins. I am registering the associated mime-type and plugin path in the registry. The plugin gets loaded properly. But now the browser is not calling NPP_GetValue.
I was suspecting that it must be because I am placing the plugin in a directory other than Firefox/plugins. Hence I did the same with npruntime.dll (the sample which comes with Gecko sdk). Suprisingly npruntime.dll scripting was working. Please guide me whether I missing anything important while creating the new plugin.

NPP_GetValue doesn't get called to get the NPObject until the first time you access it with javascript in many cases. When you do a getElementById, it will make the call.
Likely other calls to GetValue are being made, but you aren't seeing them because you aren't handling them. However, that's still not guaranteed.

Sorry for replying so late. I somehow solved the problem. I was embedding the plugin using tag
then i wrote a small javascript code
var MyWorkingPlugin = document.getElementById('MyPlugin');
It seems that after executing the above javascript NPP_GetValue was called. Currently I have no convincing reason why it happened but it worked and I am happy for the moment. If anyone can explain the above behaviour please let us know.

Related

Cordova file plugin can't access the application directory on windows 8

Please help, I can't seem to get an answer for this anywhere.
If I use the Cordova file plugin to try and access the application directory on Windows 8, it always fails! Here is the basic code I am using:
window.resolveLocalFileSystemURL(cordova.file.dataDirectory + 'www/assets/images/image.png', gotFile, fail);
I have been using the same basic code on the Android and iOS versions of the app for some time now with no problem so I don't understand why the Windows 8 version doesn't like it.
Through console logs I can see that the link generated is in fact correct and it's actually exactly the same as one used to append the same image to the page (which works fine):
<img src="ms-appx:///www/assets/images/image.png">.
Can anyone please tell me why I can't use cordova.file.applicationDirectory with Windows? I know that folder is read only, I am just trying to read from it.
Note: I can use window.resolveLocalFileSystemURL with the cordova.file.applicationDirectory no problem at all, it works as expected. Its only the cordova.file.dataDirectory that always fails for me. The closest answer I could find was some people having trouble with the image paths of images saved from the camera plugin but that seems to have been a bug that was fixed by Cordova. If this is not a bug also then I'm assuming there is something really simple I can do to make the resolveLocalFileSystemURL work?
Thanks.
I found a solution to my problem by using 'windows.storage.storagefile', I had success with the following code:
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(new Windows.Foundation.Uri('ms-appx:///www/test.html')).done(win, fail);
More info can be found here: msdn.microsoft.com/library/windows/apps/… I hope this helps some other people struggling with Windows 8 as I spent quite a time scratching my head about it and trying lots of different ways.
Cheers,
Stuart

require-less throwing lessc error in firefox

So I'm working with RequireJS and BackboneJS. I can get everything to work fine in Chrome but when I load up in Firefox I'm getting that lessc is not defined. Obviously pulling out the less files will prevent the error from occurring. Does anyone have any ideas why require is unable to load lessc in firefox but its doing fine in chrome?
Screenshot:
http://screencast.com/t/WenocFdCA0V
Video w/ lessc not being defined in Chrome but not Firefox
http://screencast.com/t/ac96qZrpQb3R
Let me know what other info may be useful.
Thanks in advance!
Seth
less.js is broken, because it uses loadStyles before it defines it, and Firefox stopped hoisting functions according to the spec. There are probably more such mistakes, but this is the first one that is triggered during execution. Please note that the minified version is not affected because of the minification rewriting the code.
less-require is similarly broken, as it contains less.js and therefore contains the same bug.
You might want to replace lessc.js in require-less with the 1.5 beta or master version of less.js to work around this, or wait for upstream to officially release it and require-less to pick it up.
However, it appears that lessc.js is a modified version, so it isn't likely as easy as replacing the file. You would need to merge the changes back.
It might be easier just to move the affected latedefs around until it runs correctly instead of upgrading to a later less.js version.

Firefox plugin dll dependency on the filename

my current work tasking requires creating a firefox plugin. I've done this relatively easily on Linux but porting to windows has exposed a peculiar problem. To do the port, I refactored the basic windows example given in the mozilla source tree. I did this operation slowly and methodically, testing as I went. Aside from the occasional OS dependent glitch everything seemed to be going fine until I finally changed the output name of the plugin dll. So, instead of creating a dll called npbasic.dll, the filename was fubar.dll. This immediately caused the plugin to stop working: it did not get picked up in Firefox about:plugins. Changing the filename back to npbasic.dll allowed the firefox plugin tab to "see" the plugin again.
Is anyone aware of an aspect of dll linking/functionality which could be causing this observed dependency?, any help or pointers would be greatly appreciated.
Well, I've done some more research and it's clear that my approach of painstakingly refactoring the example plugin was flawed, the best strategy is to use something like firebreath, as described here : How to write a C++ FireFox 3 plugin (not extension) on Windows?

flXHR - getting started (a simple question)

I am trying to use the flXHR javascript library for making cross-domain calls.
I got stuck at the begining.
As they say in the docs, I copied the /deploy directory's content to a /scripts directory.
All the dependencies are supposed to be included in the flXHR download.
This is my html, which returns several errors:
the errors:
y.base_path is undefined
y.checkplayer is undefined
y.ua is undefined
E.attachEvent is not a function
thanks
flXHR is tested and works (AFAIK) on all major browsers' latest released versions. I don't revalidate the test-suite every single new release of any browser, but I do so from time to time.
With respect to the "base_path is undefined" error... the problem is not with flXHR (or CheckPlayer), but with how Firebug traps for JS errors.
I have a try/catch block around access of that variable, and if it's not present, then I take an alternate action. From a normal JS perspective, this is not a JS error, because the try/catch block catches it and deals with it. But Firebug still registers it as an error. This error is erroneous, and as far as I know is not going to affect any behavior in the rest of your code.
Again, to my knowledge, flXHR is currently working in all browsers. If you have issues, please visit the flXHR forum on http://flXHR.flensed.com.
I noticed the "y.base_path is undefined" error sometimes, but only when Firebug is open. Try closing firebug (or use a different browser) and see what happens.

npapi - javascript doesnt load the content of a plugin

I wrote a firefox plugin using C++ and used the <EMBED> to load it to html.
In javascript I got the embedded plugin by using document.getElementByID,
but when I tried to call a plugin function, the function was undefined. Moreover,
plugins constructors did not run while loading the page.
The same html file and plugin seems to work on some computers, while it doesnt work on others.
Does anyone have an idea what might by wrong?
How can I debug such an issue?
Can you reproduce it on your computer at first? If not, then try to figure out what systems, browsers, architecture, versions, they are using.
I recall, there are many GECKOSDK's, and each one has a specific version it works for. https://developer.mozilla.org/en/gecko_sdk For example, different SDK's for Firefox 1.5-2.0, FireFox 3.0, Firefox 3.5, and Firefox 3.5
For different browers, make sure you are exposing the right DLL Exports, browsers can vary: http://git.webvm.net/?p=npsimple is a good starting point. You can use firebreath.googlecode.com too as an alternative.
My suggestion would be to use an object tag instead of <embed>. In my experience, doesn't seem to work as reliably.
If I had more information on how your plugin is structured (are you using XPCOM or npruntime?), I might be able to help more.

Resources