Closed GoogleCodeExporter closed 9 years ago
Linux support isn't currently on the CEF road map because we haven't had any
volunteers to implement it. Would you like to volunteer? :-).
I would estimate 40 hours for a 90% port of CEF to Linux, which will primarily
involve integrating the Linux bits from test_shell and creating a Linux version
of
the cefclient application. The remaining 10% will be features like printing
and view
source which will take an unknown amount of time.
Original comment by magreenb...@gmail.com
on 2 Jul 2009 at 5:22
Now that Chrome on Linux is nearing a stable release, is the amount of effort
required
decreased at all? What bits from Chrome could be reused for CEF?
Original comment by mark.ren...@gmail.com
on 24 Nov 2009 at 6:01
Please see this thread on the CEF forum:
http://magpcss.org/ceforum/viewtopic.php?f=6&t=49
Original comment by magreenb...@gmail.com
on 24 Nov 2009 at 6:06
Most of the libcef internal code for Linux support is in place. The following
work remains to be done:
1. Implement glue functions in browser_webkit_glue_gtk.cc.
2. Add Linux resource building support to cef.gyp.
2. Implement the GTK version of the cefclient application.
The test_shell project can act as the model for most of this work.
Original comment by magreenb...@gmail.com
on 12 May 2011 at 1:27
Hi guys,
I attempted to compile the latest version on ubuntu with gcc 4.5.
Attached patch that fixes trivial compilation issues (cef_trivial.patch), just
-Werror results failure on conversions from NULL to 0.
The second patch is just a FYI for people to see what is required to make
things compile. I also created an empty stub implementation of
browser_webkit_glue_gtk.cc, not included.
I am really unfamiliar with GYP, but it seems that on Linux the GTK include
directories is not set for the libcef_dll_wrapper. (But it does set them
properly for libcef.
Any ideas?
I'll try to spend a bit of my sparetime to try and get this up and running. Any
help is appreciated :)
Original comment by JBjo...@gmail.com
on 17 Jun 2011 at 11:17
Attachments:
[deleted comment]
Hey guys,
As discussed with Matt, what we'll be doing is setting up a public github (or
similar) account for us all to work on the Linux changes before integrating it
into CEF.
Most likely I'll get it sorted this weekend, but anyone else is welcome to if
they want.
Regards,
Keith
Original comment by plat...@gmail.com
on 6 Sep 2011 at 2:32
Hi guys,
I've created a repository on github for us to use:
https://github.com/angrymango/CEF
Tim
Original comment by tgk...@gmail.com
on 6 Sep 2011 at 4:32
Hey, good stuff.
I'm creating a patch now.
glue functions, resource building, view source, etc all done. Printing and some
other small things aren't. I also haven't written a cefclient_gtk.cpp yet as we
were just using it directly in our program.
There are also two outstanding bugs that have me stumped: drop down boxes
(<select> tags) that have many options have bad mouse focus, and sometimes text
boxes (and possibly webwidgets in general) don't function correctly, eg: gets
focus but doesn't respond to it (with cursor, input,etc).
-Keith
Original comment by plat...@gmail.com
on 6 Sep 2011 at 4:39
I have a basic cefclient_gtk.cpp I'll flesh it out more and then add it.
I've noticed the issues you mention with form elements. I think I might create
some tests to compare it with test_shell. Have you noticed the same issues
happening with the test_shell?
Original comment by tgk...@gmail.com
on 6 Sep 2011 at 4:50
Ah cool, want to send it through (a basic one is better than none :P)
Good idea re the tests.
I haven't tinkered with test_shell in a while, but I may do.
Original comment by plat...@gmail.com
on 6 Sep 2011 at 4:51
Here is my cefclient_gtk.cpp. As I say it's not finished yet. Issues that I
will sort out are:
It doesn't close down gracefully yet
The code that initializes the resource bundle shouldn't be in there - I believe
it should be in browser_webkit_glue_gtk.cc
The test don't run yet
Original comment by tgk...@gmail.com
on 6 Sep 2011 at 7:24
Attachments:
Cheers,
I'll get the patch to you ASAP so you can get the pak built and test more :P
-K
Original comment by plat...@gmail.com
on 6 Sep 2011 at 7:32
Ah the other thing that I forgot is that nearly all the code from test_shell is
expecting Window -> VBox -> CEF, which of course isn't always the case.
Things like
GtkWidget* window = gtk_widget_get_parent(gtk_widget_get_parent(host))
have to be changed to
GtkWidget* window = browser_->UIT_GetMainWndHandle()
but not in all cases.
-Keith
Original comment by plat...@gmail.com
on 6 Sep 2011 at 9:28
Oh and the <select> boxes only have issues when the window isn't maximised =/
Original comment by plat...@gmail.com
on 6 Sep 2011 at 9:30
Oh I just realised we put together a basic gtkclient at one point.
Attached if it's any use for you (very simple and old).
Original comment by plat...@gmail.com
on 6 Sep 2011 at 9:45
Attachments:
Regarding the <input> boxes having problems, the following is what I'm getting:
* Ctrl+Shift+Left always causes it for me
* All context menu functions still work (copy, cut, paste, select all, etc)
* The box does not have the focus 'ring' (orange glow)
* Text appears read-only (selection is grey, not blue)
* Javascript events still work (such as onclick clearing the contents of the input area)
* Refreshing the page fixes the widget for a split second before the page refreshes
Original comment by plat...@gmail.com
on 6 Sep 2011 at 10:01
I've made some progress on the tests, some are working. I need to get
client_handler_gtk.cpp written so that the others work.
I see what you mean about the assumptions made regarding the UI hierarchy and
the fix.
I've done a bit more testing regarding the form elements. The problems I'm
seeing on my build are not present in the test_shell so it looks like that may
be the place to find the answer. I'll carry on investigating.
I'm currently running this in a VM which makes testing the hardware accelerated
aspects a bit unrealistic. I'm going to try to get a physical machine organized
when I get time so I can test properly.
Let me know if you want me to make you a collaborator on the github project.
Tim
Original comment by tgk...@gmail.com
on 7 Sep 2011 at 3:47
Hey
Yeah all of mine is in my dev VM (slowly migrating to another lappie I bought).
Interesting that it doesn't occur there. Probably part of
browser_webview_delegate_gtk.cc or webwidget_host_gtk.cc.
Attached is a copy of my libcef dir, so you can see what I've done. Sorry I
haven't had a chance to make that patch yet, I'm flat out with our main project
(Linux port of Desura client, www.desura.com if you're interested) which makes
use of CEF. I have to pull all of our crud out of the patch before sending it
on sorry :P
Yeah collaborator will be good. Hopefully I'll get some CEF time before next
week!
-Keith
Original comment by plat...@gmail.com
on 7 Sep 2011 at 8:02
Attachments:
Thanks for posting your code. I'm planning to test it out but I've hit a
problem. I built the latest supported chromium revision last night trunk@91424
in order to try and integrate the latest version of CEF. This revision seems to
have problems on Linux.
It wouldn't link using gold so I had to fall back to ld.
When built chromium crashes with:
[2195:2195:1684907111:FATAL:histogram.cc(798)] Check failed:
histogram->HasConstructorArguments(minimum, maximum, bucket_count)
Backtrace:
base::debug::StackTrace::StackTrace() [0x7f6643c99a56]
logging::LogMessage::~LogMessage() [0x7f6643cb9176]
base::LinearHistogram::FactoryGet() [0x7f6643cc9291]
GpuDataManager::UpdateGpuFeatureFlags() [0x7f6645ab2852]
GpuDataManager::UpdateGpuBlacklist() [0x7f6645ab22d7]
GpuBlacklistUpdater::UpdateGpuBlacklist() [0x7f66434eaf49]
GpuBlacklistUpdater::Unpack() [0x7f66434eab4b]
WebResourceService::OnWebResourceUnpacked() [0x7f66434ed99e]
WebResourceService::UnpackerClient::OnUnpackWebResourceSucceeded() [0x7f66434ee7dd]
DispatchToMethod<>() [0x7f66434ef015]
IPC::MessageWithTuple<>::Dispatch<>() [0x7f66434eeb0f]
WebResourceService::UnpackerClient::OnMessageReceived() [0x7f66434ee6f4]
DispatchToMethod<>() [0x7f6645b850af]
RunnableMethod<>::Run() [0x7f6645b84f50]
(anonymous namespace)::TaskClosureAdapter::Run() [0x7f6643cbae35]
base::internal::Invoker1<>::DoInvoke() [0x7f6643cbdd77]
base::Callback<>::Run() [0x7f66437e95d9]
MessageLoop::RunTask() [0x7f6643cbccfd]
MessageLoop::DeferOrRunPendingTask() [0x7f6643cbce33]
MessageLoop::DoWork() [0x7f6643cbd633]
base::MessagePumpGlib::HandleDispatch() [0x7f6643d1b79d]
(anonymous namespace)::WorkSourceDispatch() [0x7f6643d1afff]
0x7f663ee63bcd
0x7f663ee643a8
0x7f663ee64639
base::MessagePumpGtk::RunOnce() [0x7f6643d1cf33]
base::MessagePumpGlib::RunWithDispatcher() [0x7f6643d1b451]
base::MessagePumpGlib::Run() [0x7f6643d1b87a]
MessageLoop::RunInternal() [0x7f6643cbcaf9]
MessageLoop::RunHandler() [0x7f6643cbc9ac]
MessageLoopForUI::Run() [0x7f6643cbdb40]
(anonymous namespace)::RunUIMessageLoop() [0x7f66430d6166]
BrowserMain() [0x7f66430d9216]
(anonymous namespace)::RunNamedProcessTypeMain() [0x7f664303a0a2]
ChromeMain [0x7f664303aaef]
main [0x7f664303b708]
0x7f663aa25eff
0x7f6643039169
This is a pretty annoying discovery I'm not sure what the best thing to do is.
Making it work on the older revision doesn't really seem like the best idea to
me.
Tim
Original comment by tgk...@gmail.com
on 7 Sep 2011 at 11:12
Oh by the way that tar.gz was for 91424 and the latest CEF. Sorry forgot to
mention that we've moved forward!
That's an odd problem. Running it in single or multi threaded mode?
Original comment by plat...@gmail.com
on 8 Sep 2011 at 2:14
Also I have one other issue with CEF Linux at the moment: Between page changes,
it redraws completely white, then draws the new page. This is as opposed to
leaving the old page until the new one is ready to draw. Doesn't look pleasant.
Original comment by plat...@gmail.com
on 8 Sep 2011 at 3:05
Just to summarise for everyone, currently known issues:
* Pages sometimes appears to redraw white before loading new page
* Proxy code in browser_request_context is a (very bad) hybrid because the updated proxy code runs slower on Windows but works on Linux (I mentioned this to Marshall)
* WebWidgets seem to fault often (see my post a few above)
* browser_webkit_glue_gtk.cc code needs to be updated to use newer methods, currently I'm using a hybrid.
Attached is some of my CEF directory. You can ignore the custom targets in
cef.gyp (for our internal purposes). Notable items are that I had to add
another patch to add new resources ID's, new 'resources directory', and extra
cef_resources target and dependency in gyp file.
Also libcef/cef_paths.* is ours I believe, and can probably be ignored :P
-Keith
Original comment by plat...@gmail.com
on 8 Sep 2011 at 12:39
Attachments:
Great stuff Keith. I'm removing the custom targets and code related to desura.
I'll get it on to github when I'm done.
Original comment by tgk...@gmail.com
on 9 Sep 2011 at 1:08
Fantastic.
If you hold off though, Mark is going to clean it up a bit and remove our crap
from it within the next few days.
Attached is some more fixes to do with cleanly exiting.
Original comment by plat...@gmail.com
on 9 Sep 2011 at 5:18
Attachments:
Hey Tim,
Any progress with the widget problems? I spent some more time on it and am
completely stumped. My best guess is that there's a virtual function missing
that gets called under certain situations, or one that's failing somewhere and
returning false.
Thoughts? Cheers
-Keith
Original comment by plat...@gmail.com
on 11 Sep 2011 at 4:23
Hey,
As a point of interest, the problem with input having issues seems specific to
the fact we are using wxWidgets _and_ GTK, so you can probably safely ignore
that issue :P
-Keith
Original comment by plat...@gmail.com
on 12 Sep 2011 at 4:09
Hey Keith,
I haven't been able to spend any more time on this yet. I'm going to look at it
over the next couple of days and I'll be able to give you some more feedback.
Tim
Original comment by tgk...@gmail.com
on 12 Sep 2011 at 6:30
No worries, and no rush as we've fixed a pile more bugs.
One major one was key events causing focus to be lost. This was resolved by
returning TRUE instead of FALSE in HandleKeyPress() (webwidget_host_gtk.cc).
-K
Original comment by plat...@gmail.com
on 14 Sep 2011 at 6:40
Oh and feel free to email me directly about little things if you want. No idea
how many people we're spamming here. Haha
Original comment by plat...@gmail.com
on 14 Sep 2011 at 6:40
Ok scratch that. Returning FALSE is correct, the fix came elsewhere. The main
issue was that the CEF parent didn't actually have focus.
Original comment by plat...@gmail.com
on 14 Sep 2011 at 6:44
Ok, two more new notes:
1) CEF uses libpng12 (old, at 14 now) and libjpeg62 (superseded by
libjpeg_turbo, which has same ABI)
2) CEF also compiles with the following deps (debian compatibility mode,
should't have 'd' on the ends):
"libnss3.so.1d"
"libnssutil3.so.1d"
"libsmime3.so.1d"
"libplc4.so.0d"
"libnspr4.so.0d"
"libplds4.so.0d"
-Keith
Original comment by plat...@gmail.com
on 20 Sep 2011 at 6:16
I've just committed the initial changes required to build CEF on Linux here:
https://github.com/angrymango/CEF
cefclient is mostly working with a few limitations -
https://github.com/angrymango/CEF/issues
This has been tested against chromium revision 100584. Since then there has
been a new release revision 102269 so at some point I'll need to find some time
to update it.
Original comment by tgk...@gmail.com
on 28 Sep 2011 at 10:48
Hey,
I'm unfortunately not working on CEF any more as I've resigned from the
company, but lodle has picked up where I left off. I will however still clean
the CEF code up and commit it at some point though (lots of new shit we've
fixed).
Cheers
-K
Original comment by plat...@gmail.com
on 16 Oct 2011 at 5:31
I've forked the angrymango repo, rebased on latest cef and done a few small
fixes to the .gyp generation. Available at https://github.com/phb/CEF
Original comment by p...@spotify.com
on 24 Oct 2011 at 8:11
Initial Linux support committed in revision 338 based on
https://github.com/phb/CEF @ CEF revision 332. Thanks to everyone who worked on
this, you all did an awesome job. Please provide future changes as patches
against the CEF SVN repository.
Original comment by magreenb...@gmail.com
on 24 Oct 2011 at 8:22
When i'm trying build latest CEF on Ubuntu 11.10 (x86) i got errors:
fddima@fddima:~/chromium/src$ make cefclient BUILDTYPE=Release
ACTION Extracting last change to /home/fddima/chromium/src/out/Release/obj/gen/build/LASTCHANGE out/Release/obj/gen/build/LASTCHANGE.always
CXX(target) out/Release/obj.target/base_i18n/base/i18n/break_iterator.o
In file included from third_party/icu/public/common/unicode/strenum.h:14:0,
from third_party/icu/public/common/unicode/uenum.h:24,
from third_party/icu/public/common/unicode/uloc.h:25,
from third_party/icu/public/common/unicode/ubrk.h:12,
from base/i18n/break_iterator.cc:8:
third_party/icu/public/common/unicode/unistr.h: In member function
‘icu_46::UnicodeString& icu_46::UnicodeString::replace(int32_t, int32_t,
UChar32)’:
third_party/icu/public/common/unicode/unistr.h:4024:9: error: variable
‘isError’ set but not used [-Werror=unused-but-set-variable]
third_party/icu/public/common/unicode/unistr.h: In member function
‘icu_46::UnicodeString& icu_46::UnicodeString::append(UChar32)’:
third_party/icu/public/common/unicode/unistr.h:4327:9: error: variable
‘isError’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors
May be there is related to chromium's issue:
http://code.google.com/p/chromium/issues/detail?id=87490
PS: There issue of GCC 4.6 support, which currently doesn't support fully, but
like train - gcc 4.6 becomes only one possible choice for chromium's team. So i
think this will be supported soon.
Original comment by fdd...@gmail.com
on 25 Oct 2011 at 7:54
I mean, most of this problems must be solved by updating chromium to newer
version. For example, bug with icu's unistr.h already fixed. So may be have
sense update CEF to some good version.
Original comment by fdd...@gmail.com
on 25 Oct 2011 at 8:11
I successfully compiled cefclient under Gentoo, however the HTML5 video test
consistently crashes:
[1025/172833:WARNING:proxy_service.cc(481)] PAC support disabled because there
is no system implementation
[1025/172842:FATAL:alsa_output.cc(211)] Check failed: MessageLoop::current() ==
message_loop_ (0x7fade0827950 vs. 0x7faddf024950)
Backtrace:
base::debug::StackTrace::StackTrace() [0x7fae036c6da6]
logging::LogMessage::~LogMessage() [0x7fae036ecbdc]
AlsaPcmOutputStream::AlsaPcmOutputStream() [0x7fae03798f1f]
AudioManagerLinux::MakeAudioOutputStream() [0x7fae03795118]
media::ReferenceAudioRenderer::OnInitialize() [0x7fae037e3c58]
media::AudioRendererBase::Initialize() [0x7fae037c6633]
media::PipelineImpl::InitializeAudioRenderer() [0x7fae037b73d3]
media::PipelineImpl::InitializeTask() [0x7fae037b3f54]
base::internal::Invoker1<>::DoInvoke() [0x7fae037ba658]
base::Callback<>::Run() [0x7fae036bf883]
MessageLoop::RunTask() [0x7fae036f1c3f]
MessageLoop::DeferOrRunPendingTask() [0x7fae036f1d71]
MessageLoop::DoWork() [0x7fae036f258d]
base::MessagePumpDefault::Run() [0x7fae036fa6c5]
MessageLoop::RunInternal() [0x7fae036f18a9]
MessageLoop::RunHandler() [0x7fae036f1750]
MessageLoop::Run() [0x7fae036f10a1]
base::Thread::Run() [0x7fae0374c4ec]
base::Thread::ThreadMain() [0x7fae0374c670]
base::(anonymous namespace)::ThreadFunc() [0x7fae03747847]
start_thread [0x7fadfea0ab5b]
0x7fadfe7511dd
Original comment by axton.ma...@gmail.com
on 25 Oct 2011 at 10:30
I got successfull build CEF on Ubuntu 11.10, with Chromium rev 107180 (!latest
yesterday's revision - not a good choice!).
HTML5 video looks as worked.
I'm attached my fix to cef.gyp which disable warnings about c++0x
compatibility, as some names (such as nullptr) conflict with upoming c++0x
types. Note, that same warning suppression used by WebKit, so feel free to
disable this warns.
So to got better support linux, i think CEF must go to some newer appropriate
rev of Chromium.
PS: Also i do quick fix to cef_process.cc, but this is are really unclean.
Original comment by fdd...@gmail.com
on 26 Oct 2011 at 7:09
Attachments:
Compiling in release mode generates the following warning/error on my system:
cc1plus: warnings being treated as errors
cef/tests/cefclient/download_handler.cpp: In member function âvoid
ClientDownloadHandler::OnReceivedData()â:
cef/tests/cefclient/download_handler.cpp:192:56: error: ignoring return value
of âsize_t fwrite(const void*, size_t, size_t, FILE*)â, declared with
attribute warn_unused_result
make: ***
[out/Release/obj.target/cefclient/cef/tests/cefclient/download_handler.o] Error
1
After removing -Werror, the compilation succeeded, and the HTML5 video test
appears to work (in Release mode).
Original comment by axton.ma...@gmail.com
on 26 Oct 2011 at 9:01
Latest r346 revision is introduce build errors on linux without path
cef_string_multimap_conversion_null_r346.patch attached in
http://code.google.com/p/chromiumembedded/issues/detail?id=386 .
Original comment by fdd...@gmail.com
on 31 Oct 2011 at 11:57
my build of cefclient on Ubuntu 10.10 can't access websites through proxy,
internal websites without using proxy can be accessed. Is it a know problem of
Linux port of CEF?
Original comment by zhizhang...@gmail.com
on 1 Nov 2011 at 10:51
Why do we use GTK instead of X11 to implement CEF Linux port? I think X11 is
more widely supported and if we need to implement java binding of CEF, we can
only get a X11 drawable from AWT Native Interface, which can not be used in
CEF's windowInfo which based on GtkWidget
Original comment by zhizhang...@gmail.com
on 4 Nov 2011 at 3:21
@comment#43: I see the following error when I run on Ubuntu 10.04, but I
haven't explored the problem any further:
[1104/105450:WARNING:proxy_service.cc(481)] PAC support disabled because there
is no system implementation
@comment#44: Chromium uses GTK internally. It would likely be a significant
effort to eliminate this dependency.
Original comment by magreenb...@gmail.com
on 4 Nov 2011 at 6:13
Revision 369 does not compile for me:
cef/libcef/webwidget_host_gtk.cc: In member function ‘void
WebWidgetHost::Paint(const gfx::Rect&)’:
cef/libcef/webwidget_host_gtk.cc:358:21: error: ‘ResetScrollRect’ was not
declared in this scope
cef/libcef/webwidget_host_gtk.cc: At global scope:
cef/libcef/webwidget_host_gtk.cc:447:37: error: no ‘void
WebWidgetHost::ResetScrollRect()’ member function declared in class
‘WebWidgetHost’
Original comment by axton.ma...@gmail.com
on 10 Nov 2011 at 7:59
@comment#46: Compile error is fixed in revision 370.
Original comment by magreenb...@gmail.com
on 10 Nov 2011 at 8:25
@comment#40: Thanks, gcc 4.6 patch to add "-Wno-c++0x-compat" compile flag
committed in revision 374 along with a 64bit build fix.
To build using gcc 4.6, CEF revision 374 and Chromium revision 109626 you will
also need to apply the following webkit patch:
https://bugs.webkit.org/show_bug.cgi?id=72907
Tested with Ubuntu 11.10 64bit.
Original comment by magreenb...@gmail.com
on 12 Nov 2011 at 12:07
@comment#48: That should say https://bugs.webkit.org/show_bug.cgi?id=72097
Original comment by magreenb...@gmail.com
on 12 Nov 2011 at 12:09
Compile error introduced by r378:
cef/tests/cefclient/cefclient.cpp: In function
‘int<unnamed>::GetIntValue(const CefString&)’:
cef/tests/cefclient/cefclient.cpp:72:29: error: ‘atoi’ was not declared in
this scope
Fixed by adding #include <cstdlib>
Original comment by axton.ma...@gmail.com
on 15 Nov 2011 at 10:49
Original issue reported on code.google.com by
mark.ren...@gmail.com
on 2 Jul 2009 at 4:20