Which browser plugin technology to use for cross platform design? - plugins

I mean ActiveX is IE only and dead, and so java applets are dead.
Flash is still not present in mobile browsers, Mozilla is present only on 1 phone, so XPCOM is also not an option.
How do you write a plugin that need access to file system, and do some other things, like unzip files, upload, download, etc.

Forget about client side plugins. Most of that can be handled on the server side. Then for anything that really does need a client side implementation you can use Javascript.

Related

Use Chrome Dev Tools as a library?

Is Chrome Dev Tools available only through Chrome extensions? Or is there a way we can use it, for instance, as a library from a JS standalone file?
Update
Chrome DevTools Frontend is now an NPM package that you can take advantage of. It is based from the new DevTools sub-repo in Blink. So you can easily pull in the DevTools assets and keep then up-dated without much work.
Original post
It depends on what you want exactly. You can dig in and rip out bits of the frontend to use. Like Betwixt by Konrad pulls the network panel design out and plugs it up to an OS interceptor. So you can use the network panel you know and love to debug any app on your desktop.
Now, can you easily do this kind of stuff. Even keeping it auto-updated? No, not really. It is fairly complicated and you need to be able to handle ripping the stuff out yourself. That being said, if you want a challenge then the code is open to everyone.
I'd say that the first sentence on the About website is pretty clear:
... built into Google Chrome.
So officially, by Google, it's only for Chrome. It's part of Chrome, not a standalone library. Issues linked to DevTools are part of Chromium, where people can contribute.

a comparison in cross browser plugin's frameworks

I have found that there are plenty of frameworks for browser plugins.
my first question:
which one of the following frameworks specified for plugins and which one is not specified for plugins:
FireBreath, OpenForge, Kango, BabelExt, Nixysa project, JUCE project, QtBrowserPlugin project .
my second question:
Is there another popular plugin's framework other than those mentioned?
my third question:
What is the main differences of these popular plugin's frameworks?
Indeed is there any comparison of these frameworks, the comparison could be in each of following terms:
usability (for a page as a NPAPI plug-in or for a browser as an
add-on extension),
simplicity (in developing),
speed (on execution),
extensibility (of developed add-on),
availability (in Windows 86x and 64x, Unix, Linux, mac and other
platforms and also mobile platforms specifically android, ios, ...),
flexibility (for new technologies),
reliability (in terms of security),
accessibility (open source or not),
portability (in Fire-fox, chrome, IE, Safari, Opera, ...),
applicability (in drawing, communicating, calling from external
server, threading, network accessing, etcetera),
stability (in changing the policies, for example in deprecating
NPAPI)
Also I have read Cross-Browser Extensions API? which I think it is about extension's framework (not plugin's framework)
I'll be honest -- this seems like something you should be able to answer with some google searching. I appreciate that you're at least trying to apply suggestions on how to better ask questions, though, so I'll respond on the few that I know something about.
FireBreath is a C++ framework for creating browser plugins, not extensions. It works as an NPAPI plugin for browsers supporting NPAPI plugins (previously this was all but IE, but Chrome dropped support for them this year and Firefox plans to at the end of 2016) or as an ActiveX control, giving it equivalent functionality to a browser plugin in Internet Explorer. FireBreath 2, which is working but poorly documented so far, changes the APIs from being synchronous between the browser and plugin to being asynchronous and adds an emulation layer to let them work with Google Chrome using Native Messaging. It's the most complete and up to date of the plugin frameworks, as far as I am aware. I am its primary author, so feel free to get your own confirmation of that.
Nixysa is a tool that takes definition files and outputs code for a NPAPI plugin. I haven't used it, so I can't tell you exactly what it's capabilities are. It hasn't been updated since 2012, when PPAPI support was added; this is unlikely to be useful, though, since PPAPI has changed significantly since then, and also since the only PPAPI plugins that can run without special command-line flags to chrome are ones specially blessed by the Chrome team.
JUCE is a GPL library with a commercial licence available which has some support for creating browser plugins. I have no idea as to how powerful it is these days; it seemed well written when I last looked at it, and takes a much more minimalistic approach than FireBreath does; FireBreath gives you a framework and tries to make everything Just Work, whereas JUCE seems (I could be wrong) to be more of a "provide the building blocks, but don't try to make everything look the same" type of thing.
QtBrowserPlugin is a defunct unmaintained project which at one time allowed creating browser plugins (probably just npapi, but not certain) with QT. Indications are that it probably doesn't work anymore.
I have no idea what the other projects are. If I were you, I'd try doing some research. Google is your friend.

What is the technical difference between a browser extension and a plugin?

From a user's perspective, an extension seems to be something that you go to the Chrome Web Store to get to extend the browser's functionality, whereas a plugin is something that you have to go to an external third party's website to get to extend the browser's functionality.
From a technical or implementation perspective, what is the difference between the two? I saw a similar question here (Is phplivex a extension or plugin?) but didn't get the answer I was looking for.
I am after the difference in the way an extension or plugin is developed and deployed (if any), and if there is any overlap between the two.
The words "extension" and "plugin" have lots of different (but related) meanings accross software products. These words are used interchangeably by many users (and developers). In browser extensions, they have a precise meaning, which is also visible through the UI. E.g. extensions (and apps) can be managed at chrome://extensions/, while plugins can be managed at chrome://plugins/ in Google Chrome.
In Chrome, Firefox, Opera and Safari, browser extensions refer to pieces of software that augment the browser using the browser extension APIs (see extension docs for Chrome, Firefox, Opera, Safari). Most of the modern browsers require extensions to be written using JavaScript. Extensions are usually platform-independent and run within a limited environment (Firefox is a notable exception to the latter). Extensions are usually deployed as a bunch of JavaScript files, other assets (HTML, CSS, media, ...) and configuration bundled in a browser-specific archive. Browser usually offer a seamless way to install the extension directly in the browser.
Plugins refer to NPAPI plugins, which are pre-compiled binaries that enhance the functionality of browsers via NPAPI. These plugins are invoked by inserting an <embed> or <object> tag in the document with a specific MIME-type. NPAPI plugins are OS-specific (though the source code can be platform independent) but not specific to a single browser. The capabilities of NPAPI are not constrained by the browser, so a bug in a browser plugin often have huge security implications (think of Java, Adobe Flash Player, Adobe PDF Reader). This is one of the reasons why NPAPI support is in the process of being completely dropped from Chrome. NPAPI plugins are usually installed outside the browser, e.g. via MSI installers on Windows.
As said in the introduction, "plugins" and "extensions" are used interchangeably. If you hear anyone talking about "(browser) plugins", odds are that they actually mean browser extensions.

How gwt receives the request and loads the ui while in development mode?

I am new to GWT and understood the motive behind creating such good framework. However I could not understand how GWT builds the UI and shows while in development mode.
It is said that while bootstrapping .nocache.js file is loaded in the browser, then this file created a hidden iframe. Then depending on browser and language settings a .cache.html file is loaded in the iframe where all application logic resides.
What I could not understand is how gwt does this in development mode/ hosted mode. Because .cache.html files are not available in development mode. I assume that the sdk receives a request from .nocache.js file regarding the browser details and then generates a .cache.html file for that particular browser and that is loaded in the iframe. My question is how .nocache.js file sends a request to sdk to dynamically generate a .cache.html file? Or does it have something to do with hosted.html and the browser plugin? How the UI and RPC code is loaded while in development mode. For nocache.js file to send a request there must be a server program (Servlet) listening to the request and allowing GWt to start looking for entrypoint class and start generating the UI content.
I could not understand how gwt will come to know about the browser settings and generate the UI? Does hosted.html and browser plugin has something to do with the content generation?
I searched using google, but all my trials went useless. Or may be I searched using wrong search keys. Could anyone please tell me or point me to a link where it is clearly explained?
When an application is running in development mode, the Java Virtual Machine (JVM) is actually executing the application code as compiled Java bytecode, using GWT plumbing to connect to a browser window.
As of GWT 2.0, development mode uses a regular browser instead of an embedded browser. You can use any supported browser.
Out of process hosted mode (OOPHM) is an upcoming replacement for GWT hosted mode debugger. OOPHM allows one to use a standard browser (IE, Safari (32bit) and Firefox) for debugging GWT-client-side code.
With OOPHM you can:
do modifications to your widgets with no time consuming Java-to-JavaScript recompilation
set breakpoints to widget code.
use any advanced browser features and extensions not available in conventional hosted mode (Firebug for example).
Useful links:
https://developers.google.com/web-toolkit/doc/latest/DevGuideCompilingAndDebugging
http://code.google.com/p/google-web-toolkit/wiki/DesignOOPHM
http://code.google.com/p/google-web-toolkit/wiki/UsingOOPHM
http://www.slideshare.net/allahbaksh/gwt-generators-and-oophm
Have a nice time.

Can we implement the browser plugin to do the automation for sites?

Can we implement the browser plugin to do the automation for sites?
I want to implement an standalone application either a browser plugin or desktop application which can do the automated tasks, basically:
1. Log in to the site
2. Navigate across the pages by filling forms if any.(navigation is not the same for all the use cases)
3. Do the action & download the files to local system.
can we implement this as a browser plugin. Pro's & con's is helpful.
I'm also looking at adobe AIR. Please suggest.
Note: I don't want the users to see what's happening n the browser.
Edit: I want this to be cross platform windows, linux, Mac...
Thanks,
John
I am currently using Selenium IDE, a FireFox plug-in. It is free and pretty easy to use until you get deeper into it's functionality which requires coding (e.g. C#, Javam Ruby and others).
Basic functionalities:
1) Record
2) Playback
3) Assert values
4) Screenshot on failure
5) Setup multiple variables as data source
6) Export a test cases or test suite
7) Yes, it supports use cases and they can be downloaded to playback or imported as test cases
Note on user's visibility to web page activities - the browser has to be opened for this version of tool. There is another version that can automate from a hub or central machine which is able to open multiple browsers or Operating Systems, but, that's just something to keep in mind if you need something more that record and playback page navigation.
Selenium IDE: http://seleniumhq.org/projects/ide/