I'd like to experiment with building a browser based on Chromium, ideally with support for Chrome-extensions.
I've looked into the Chromium Embedded Framework, which does not include support for extensions.
Are the only options available to either:
reimplement the extension-API on top of CEF; or to
base the project on the Chromium source,
or are there other alternatives?
Are the only options available to either:
reimplement the extension-API on top of CEF; or
to base the project on the Chromium source,
Pretty much. But, as wOxxOm mentions in comments, CEF plans to implement the API - eventually.
Related
This is probably a silly question, however: from a Web Design/Development point of view (I mean support for web standards and web technologies), could Google Chrome and Chromium be considered equivalent?
I know that they are essentially the same browser, the former being the branded version of the latter, but they also have some functional differences, and Google Chrome features some additions not present in the base Chromium browser (detailed on the Chromium page on Wikipedia).
They use the Blink engine, which is in turn also used by other Chromium-based browsers like MS Edge and Opera; and all these browsers have an uneven support for many different web technologies, as detailed on https://caniuse.com.
I'm working on a Linux machine, and my distro ships Chromium by default, providing it from its standard repo; for the sake of simplicity and keeping things clean, I would prefer to avoid adding another external repo and install Chrome just for this task, if I can rely Chromium to behave exactly the same and not have any compatibility issue.
Like I said, this question is probably silly, but given the differences between other Chromium-based browsers, maybe this doubt of mine could be justified.
EDIT: Please note that I'm not interested in the differences between Google Chrome and Chromium from an user point of view or in details of their history and so on; I only wish to know if from a website development point of view, they are fully compatible or if they support the same set of features. In other words, if I test a site from Chromium, can I be sure that it will work also in Google Chrome? Do they support the same exact set of CSS, JS (and other web-related technologies) features?
Chromium is an open-source browser project that forms the basis for the Chrome web browser. It's maintained by the Chromium Project, while Chrome is maintained by Google. Aside from code-opennes, the main difference (for your concerning question) between the two browsers is that Google adds a number of proprietary features to Chrome like automatic updates and support for additional video formats. Also added is AAC, H.264, and MP3 support. Giving you acess to a wider variety of media content, like sites using HTML5 to stream H.264 videos. Both browsers include Opus, Theora, Vorbis, VP8, VP9, and WAV codecs. Chrome also includes a sandboxed Adobe Pepper API (PPAPI) Flash plug-in that updates along with.
From a programmatic side, both support Google DevTools protocol with all of the flexibility and possibilities this brings, like browser automation using the popular puppeteer Node.js runtime, allowing you to run automated tests either in head or headless environments. Both browsers use the Blink rendering engine and the V8 JavaScript engine, so both will give you same support for CSS, HTML and DOM parsing/rendering, and same JavaScript compatibility, functionality and performance. So the real difference is if you're developing media-content centric web apps, in that case you will benefit more from Chrome since it includes all of the above mentioned extra plugins and supported formats, all of this makes the web more accessible to it and provides a wider range of things you could do.
In the use case of building a browser, both seem like tools that could be used to mock up a UI for a chromium browser. Besides CEF being vastly better documented, whats the difference between the two for this use case?
Most APIs around Chromium provides the stable API and/or ABI that Google refuses to provide with their layer. By using CEF, QtWebEngine or any of the other wrappers, you don't have your code break all the time, plus the code actually compiles out of the box, which Chromium sources rarely does except for the exact configuration Google compiles.
How do I enable desktop notifications in Chromium Embedded Framework (CEF)?
When I load my url in Google Chrome, window.webkitNotifications is non-null.
When I load my url in my embedded CEF browser, window.webkitNotifications is null.
if(!window.webkitNotifications) {
alert("You need to use The Google Chrome Browser to get this feature!");
return false;
}
Are desktop notifications supported in CEF? If so, how do I enable them?
As far as I know, current CEF versions don't support this feature.
I also needed this functionality in my project. I ended up implementing it myself, under a different namespace with slightly different functionality.
So you can implement it yourself using JS Extensions. Might take some work, but it'll get you what you need.
You can also try asking that question in the CEF Support Forum, you might get a better answer than "do it yourself".
I'd love to hear a better solution for this.
I want to develop extensions for some main browsers like chrome and firefox. Extensions written using npapi can work in different browsers, however, there are very few browser extensions developed with npapi. Can you tell me the reasons? Thank you.
Your question confuses extensions and plugins; they are very different, and have completely different goals. You cannot develop an extension using NPAPI, only a plugin. You cannot write a single extension that works across browsers.
If you are asking why very few extensions include plugins, it's because plugins are much harder to write than extensions, are platform-specific, are not necessary for the vast majority of problems that extensions are trying to solve, are much more dangerous to users (since they have access to run arbitrary code on the machine), and aren't even allowed in extensions in some browsers (e.g., Safari).
If you didn't mean extensions at all, and are asking why there are few stand-alone NPAPI plugins, most of the list above still applies.
I've asked myself if one can embed the google chrome browser engine in an own application. I'm using Delphi 2009. There's an IE ActiveX wrapper component delivered with the IDE. Also, there's a Firefox ActiveX component out there, but it's based on very old code.
I'd like to embed the chrome engine. Is there a way to do this?
Thanks in advance,
David
Google Chrome is basically WebKit layout engine + nice UI. And WebKit can be embedded.
There's also chromium embedded framework (CEF).
And finally, check out Awesomium.
Update 2:
A very good fit for this would be the new Electron Shell
Update:
As a commenter points out under this answer, this is no longer supported. For good reasons I guess.
Recently Google released the Chrome Frame active X for MS IE
see if that helps
http://code.google.com/chrome/chromeframe/
I've just release a pre-alpha version of CefSharp my .Net bindings for the Chromium Embedded Framework.
Check out source or grab bins and give me your thoughts: https://github.com/chillitom/CefSharp