summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/render_widget_helper.cc
Commit message (Collapse)AuthorAgeFilesLines
* Various popup UI fixes:pkasting@chromium.org2009-05-081-9/+0
| | | | | | | | | | | | | * Remove "show popup notification" option, pref, and all associated machinery. * Toggling whitelisting on for a site no longer hides the "manage" button. * Toggling whitelisting off for a site re-blocks (not closes) its popups, and does not hide the "manage" button. Also rips the whitelist hooks out of TabContents in preparation for getting the whitelist values directly from the BlockedPopupContainer, since there was no reason to plumb everything through TabContents. BUG=11440 Review URL: http://codereview.chromium.org/115112 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15670 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: Add a macro for handling EINTR.agl@chromium.org2009-05-011-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On POSIX systems, system calls can be interrupted by signals. In this case, they'll return EINTR, indicating that the system call needs to be restarted. (The situation is a little more complicated than this with SA_RESTART, but you can read man 7 signal if you like.) The short of it is that you need to catch EINTR and restart the call for these system calls: * read, readv, write, writev, ioctl * open() when dealing with a fifo * wait* * Anything socket based (send*, recv*, connect, accept etc) * flock and lock control with fcntl * mq_ functions which can block * futex * sem_wait (and timed wait) * pause, sigsuspend, sigtimedwait, sigwaitinfo * poll, epoll_wait, select and 'p' versions of the same * msgrcv, msgsnd, semop, semtimedop * close (although, on Linux, EINTR won't happen here) * any sleep functions (careful, you need to handle this are restart with different arguments) We've been a little sloppy with this until now. This patch adds a macro for dealing with this and corrects every case of these system calls (that I found). The macro is HANDLE_EINTR in base/eintr_wrapper.h. It's safe to include on Windows and is a no-op there. On POSIX, it uses GCC magic to return the correct type based on the expression and restarts the system call if it throws EINTR. And you can use it like: HANDLE_EINTR(close(fd)); Or: ssize_t bytes_read = HANDLE_EINTR(read(fd, buffer, len)); *BEWARE* that it will evaluate the argument multiple times, so this is not safe: HANDLE_EINTR(close(FireMissiles())); http://groups.google.com/group/chromium-dev/browse_thread/thread/41a35b2a457d73a0 http://codereview.chromium.org/100225 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15102 0039d316-1c4b-4281-b951-d872f2087c98
* Finish hooking up the worker process UI: use the domains of the workers as ↵jam@chromium.org2009-03-241-13/+11
| | | | | | | | | | the title in the task manager, and show an infobar when a page's workers die. I also cleaned up the code in RenderView which creates a window and widget, since when I originally wrote it I wasn't aware of RenderViewHost::FromID. Review URL: http://codereview.chromium.org/45025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12335 0039d316-1c4b-4281-b951-d872f2087c98
* Stop having renderers use both pids and a monotonically increasing ↵jam@chromium.org2009-03-121-5/+11
| | | | | | | | "host_id". This allows ResourceDispatcher to be used by child processes other than renderers. I've done minor related cleanup on the way to make the code simpler. Review URL: http://codereview.chromium.org/42054 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11509 0039d316-1c4b-4281-b951-d872f2087c98
* A little cleanup of ResourceDispatcherHost to make it less renderer centric, ↵jam@chromium.org2009-03-101-3/+3
| | | | | | | | since it's used by plugin and worker processes. Review URL: http://codereview.chromium.org/43001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11393 0039d316-1c4b-4281-b951-d872f2087c98
* Instead of queuing ResourceDispatcher IPC messages in RenderView, use ↵jam@chromium.org2009-03-101-11/+31
| | | | | | | | | | ResourceDispatcherHost's ability to block requests for a given route in the browser process. This is in prepration for switching to one ResourceDispatcher in the renderer process, instead of one per RenderView, to share more code between child processes. I realize that this means that resource requests for RenderViews created by other RenderViews will start a little bit later now (after a hop to the UI thread and back), but I don't think it should lead to much delay (since if our UI thread is that bogged down, we have bigger problems). I'll make sure this is the case by looking at the page cyclers. Review URL: http://codereview.chromium.org/42005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11370 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: Rewrite IPC's interaction with FileDescriptoragl@chromium.org2009-03-051-5/+5
| | | | | | | | | | | | | | | | | | | The FileDescriptor API is clearly too hard to use. It's the only IPC data type which is non-POD and serialising an invalid file descriptor is fatal to Chrome on POSIX. The use of Maybe is possibly non-obvious to non-functional programmers. This patch merges Maybe and FileDescriptor so that serialising invalid file descriptors is permitted and results in -1 at the other end. (Serialising /closed/ a file descriptor is still fatal.) Also, it adds a pointer in base/file_descriptor.h to instructions for its use with IPC. Although it's generally bad practice to mention IPC in base, in this case I cannot find another suitable location. Review URL: http://codereview.chromium.org/39208 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11041 0039d316-1c4b-4281-b951-d872f2087c98
* Bitmap transportagl@chromium.org2009-02-201-0/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch reworks bitmap transport on all platforms. Linux and Mac are switched from serialising bitmaps over the IPC channel to using shared memory. All platforms gain a shared memory mapping cache on the host side. The concept of a TransportDIB (device independent bitmap) is added to encapsulate most of the platform specifics. On Linux, we use SysV shared memory. This is because X shared pixmaps, which predate POSIX SHM, can only use SysV. By using SysV between renderer and browser, we open up the possibility to map the shared memory directly from the renderer to the X server. On Mac, we use POSIX shared memory. However, since this needs filesystem access and the Mac renderer is sandboxed from the filesystem, we add two new messages from renderer -> browser: The first, AllocTransportDIB, synchronously creates a transport DIB in the browser and passes a handle back to the renderer. The second, FreeTransportDIB, asynchronously, notifies the browser that it may close its handle to the shared memory region. On Mac, the shared memory regions are identified by their inode numbers on the wire. This means that the browser must keep handles open to all the allocated shared memory regions (since an inode number is insufficient to map the region). The alternative design is that the renderer passes the file descriptor with each paint operation. Since passing file descriptors is special case in the code, I felt that it would be best to minimise their use. Creating and freeing transport DIBs are relatively rare operations relative to paints and scrolls. On Windows, most of the code remains the same, except that Windows now uses the mapping cache added in this patch. This allows the browser to maintain a shared memory mapping for a transport DIB over several paints. Previously it mapped and unmapped for every operation, causing lots of TLB and VM churn. Review URL: http://codereview.chromium.org/21485 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10071 0039d316-1c4b-4281-b951-d872f2087c98
* Finish taking out render_messages.h includes from headers.jam@chromium.org2009-02-051-0/+1
| | | | | | Review URL: http://codereview.chromium.org/20072 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9209 0039d316-1c4b-4281-b951-d872f2087c98
* Add site_instance, navigation_entry, browsing_instance, ↵pinkerton@chromium.org2009-02-041-0/+4
| | | | | | | | renderer_security_policy, and render_widget_helper to mac and linux builds. Adds a hash for Profile so it can be put into a hash table on gcc. Review URL: http://codereview.chromium.org/21021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9115 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: gfx::NativeViewId and CrossProcessEventagl@chromium.org2009-01-271-13/+12
| | | | | | | | | | | | | | | | | | | Create a couple new typedefs for porting work. Firstly, gfx::NativeViewId is a handle to a platform specific widget in the renderer process. For Windows, this is just a HWND as before. However, in other platforms the ids used in the renderer process will be something else. CrossProcessEvent is the type of a HANDLE to a Windows event object which is used across processes. Since we aren't going to support these sorts of events on non-Windows platforms, this will have to go away at some point. For now, however, this lets us build code without too many ifdefs all over the place. Review URL: http://codereview.chromium.org/18768 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8756 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Make render_view_host compile on Mac & Linux, add to the build."agl@chromium.org2009-01-261-3/+2
| | | | | | | Review URL: http://codereview.chromium.org/18796 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8683 0039d316-1c4b-4281-b951-d872f2087c98
* Fix the build.brettw@chromium.org2009-01-261-1/+1
| | | | | | Review URL: http://codereview.chromium.org/18790 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8677 0039d316-1c4b-4281-b951-d872f2087c98
* Make render_view_host compile on Mac & Linux, add to the build.brettw@google.com2009-01-261-1/+2
| | | | | | Review URL: http://codereview.chromium.org/18600 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8672 0039d316-1c4b-4281-b951-d872f2087c98
* Make RenderWidgetHelper portable.brettw@chromium.org2009-01-261-20/+27
| | | | | | Review URL: http://codereview.chromium.org/18802 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8660 0039d316-1c4b-4281-b951-d872f2087c98
* Move files out of browser and into either renderer_host or tab_contents.brettw@chromium.org2009-01-221-0/+235
This also fixes a crash in the web contents unit test in a commented-out test and re-enable it. Review URL: http://codereview.chromium.org/18504 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8470 0039d316-1c4b-4281-b951-d872f2087c98