summaryrefslogtreecommitdiffstats
path: root/chrome/common/ipc_message_utils.h
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Move IPC code to ipc/"agl@chromium.org2009-04-031-0/+1381
| | | | | | | This reverts commit r13062 which, unsurprisingly, broke the build. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13063 0039d316-1c4b-4281-b951-d872f2087c98
* Move IPC code to ipc/agl@chromium.org2009-04-031-1381/+0
| | | | | | | (No review URL: Rietvelt couldn't cope) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13062 0039d316-1c4b-4281-b951-d872f2087c98
* Add code to support 2-way communication between extensions and renderers. ↵mpcomplete@google.com2009-04-021-1/+4
| | | | | | | | The code is almost fully symmetrical, except that right now a channel can only be opened to an extension (by ID). It should be trivial to open a channel to a tab, once we have a solid tab API. Review URL: http://codereview.chromium.org/56037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13057 0039d316-1c4b-4281-b951-d872f2087c98
* Use WebConsoleMessage instead of ConsoleMessageLevel.darin@chromium.org2009-03-311-18/+0
| | | | | | | | R=dglazkov Review URL: http://codereview.chromium.org/57073 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12916 0039d316-1c4b-4281-b951-d872f2087c98
* Use WebScriptSource and WebFindInPageRequest from the WebKit API.darin@chromium.org2009-03-311-25/+0
| | | | | | | | | | | | | | | | | | This change introduces some helper functions in glue_util.cc for efficient conversion between WebString and WebCore::String when inside the implementation of webkit/glue. This is a temporary change since eventually all code in glue that uses WebCore will be moved into the WebKit API implementation. Instead of making the Chrome automation use WebFindInPageRequest, I decided to introduce AutomationMsg_Find_Params as a copy of the old FindInPageRequest structure. That preserves the IPC protocol and avoids making the automation library depend on WebKit. R=dglazkov Review URL: http://codereview.chromium.org/57060 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12881 0039d316-1c4b-4281-b951-d872f2087c98
* Chrome-side of moving webkit/glue/cache_manager.{h,cc} to the WebKit API layer.darin@chromium.org2009-03-191-54/+0
| | | | | | | | | | | | | | This also includes a change to not have third_party/WebKit/WebKit/chromium/public in the global include path. Most of the code changes pertain to this. I also took this opportunity to do some renaming: browser/cache_manager_host -> browser/renderer_host/web_cache_manager R=brettw Review URL: http://codereview.chromium.org/42194 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12085 0039d316-1c4b-4281-b951-d872f2087c98
* NO CODE CHANGEdeanm@chromium.org2009-03-101-1/+0
| | | | | | | | | Normalize end of file newlines in chrome/. All files end in a single newline. Review URL: http://codereview.chromium.org/42015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11331 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: Rewrite IPC's interaction with FileDescriptoragl@chromium.org2009-03-051-32/+32
| | | | | | | | | | | | | | | | | | | 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
* Update clipboard classes to use string16 and FilePath instead of wstring.estade@chromium.org2009-03-041-14/+2
| | | | | | | | | | Update callers as well. This patch builds on a patch by mark.a.lindner@gmail.com which can be found at http://codereview.chromium.org/28294 Review URL: http://codereview.chromium.org/27370 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10860 0039d316-1c4b-4281-b951-d872f2087c98
* Initial checkin of the out of process worker implementation.jam@chromium.org2009-03-041-56/+95
| | | | | | | | | | | WebWorkerClient/WebWorker are parallel interfaces of WebCore::{WorkerObjectProxy, WorkerContextProxy} that use Chrome data types. When WebKit requests a WorkerObjectProxy, we create an instance of WebWorkerClientImpl. This class creates an object that implements a Chromium version of WorkerObjectProxy (i.e. with Chrome data types) through WebViewDelegate. That object is a WebWorkerProxy and talks over IPC to a WebWorker object in the worker process. The WebWorker object creates the actual WebCore::Worker object using another class in glue: WebWorkerImpl. When the WebCore::Worker object running in the worker process wants to talk back to the code running in the renderer, it talks to WebWorkerImpl which implements WebCore::WorkerObjectProxy. WebWorkerImpl converts the data types to Chrome compatible ones, and then calls the WebWorkerClient version which does IPC to get to the renderer process. This ends up at WebWorkerProxy, which calls WebWorkerClientImpl (the original class). In future changes, sandboxing, multiple worker processes etc will be added. Note that I also had to make two small changes to WebKit, since WorkerMessagingProxy couldn't be created as is for the nested worker case. I'll either check it in myself or work with Jian to do so. Review URL: http://codereview.chromium.org/27157 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10847 0039d316-1c4b-4281-b951-d872f2087c98
* Developer tools messages are forwarded as wrapped IPC::Messages(previously ↵yurys@google.com2009-02-261-0/+23
| | | | | | | | | | | | | | they were represented as int type+string body). I stole IPC::Message serialization code from jam's CL(http://codereview.chromium.org/20413). jam: please look at message forwarding code. When tools messages are send from browser to renderer they are also wrapped(unlike worker messages which are unwrapped and sent as is). It allows to describe developer tools messages in its own file instead of putting all of them into render_messages_internal.h brettw: please check if it's OK to have ForwardMessageToToolsClient in WebContentsView Review URL: http://codereview.chromium.org/21540 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10455 0039d316-1c4b-4281-b951-d872f2087c98
* Bitmap transportagl@chromium.org2009-02-201-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* POSIX: Rename DescriptorSet to FileDescriptorSetagl@chromium.org2009-02-121-1/+1
| | | | | | | This is just following up on a code review promise. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9676 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: Clean up DescriptorSetagl@chromium.org2009-02-121-17/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | In general, the IPC Message objects are const and the iterator state is a void* kept by the code which is doing the deserialisation. However, now that we have an array of file descriptors, the index of the next file descriptor is part of the iteration state and is kept /inside/ the Message (in the DescriptorSet). This means that it's a mutable member, which is never too nice and also, since the logging functions want to parse a message multiple times, we've had to turn off returning an error when one runs off the end of the array. Also, the Message copy constructor and assignment function alters the /source/ Message, by stealing all of its descriptors This patch encodes the index of each file descriptor on the wire. So the state is moved from inside the DescriptorSet into the serialised data. Additionally, the DescriptorSet is made into a lazyily created scoped_refptr, solving the problems with copying messages. Review URL: http://codereview.chromium.org/20275 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9644 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: basic IPC loggingagl@chromium.org2009-02-121-0/+1
| | | | | | | | | | For the moment, we enable IPC logging with an environment variable (CHROME_IPC_LOGGING) and log everything to stderr. Review URL: http://codereview.chromium.org/20156 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9643 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: Transfer network data using shared memoryagl@chromium.org2009-02-111-5/+7
| | | | | | | | | | | | | | | | | | | | | | This patch adds the long planned support for sharing memory on POSIX by transporting file descriptors. It largely builds on the shared memory cleanup work by jrg. We move FileDescriptor out of chrome/common/file_descriptor_posix.h and into base/file_descriptor_posix.h. Since all that's left in the chrome/common verion is the DescriptorSet, those files are renamed to descriptor_set.[h|cc]. The SharedMemoryHandle on POSIX then becomes a typedef to a FileDescriptor and thus can be serialised over IPC. After that, it's mostly a case of cleaning up those snippets of code which considered SharedMemoryHandles to be scaler values. Review URL: http://codereview.chromium.org/21208 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9580 0039d316-1c4b-4281-b951-d872f2087c98
* POSIX: fix logging of messages with file descriptorsagl@chromium.org2009-02-101-3/+7
| | | | | | | | | | | | | | | | | | | | | | | Sometimes the IPC Message logging code parses the message multiple times. When we have a side array of FileDescriptors, this fails because the array is consumed by the first parse and so the second parse fails - causing a DCHECK failure. Although we could write a system to all the side array to be parsed multiple times, this code is only enabled in debugging mode and the only advantage would be that we could log the actual descriptor numbers. It doesn't appear that the performance hit would be worthwhile. Thus, we make hitting the end of the descriptor array a non-fatal error. The returned descriptor will be -1. Since we have the number of descriptors in the message header, the only case where this could mask an actual issue would be where the browser and renderer disagree on the structure of a given message. However, such a mismatch will probably cause much more grevious errors anyway. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9472 0039d316-1c4b-4281-b951-d872f2087c98
* FileDescriptor: passing fds over IPCagl@chromium.org2009-02-071-0/+32
| | | | | | | | | This patch introduces a FileDescriptor object which can be included in IPC messages and will perform the magic needed to pass file descriptors over IPC. After some consideration, Windows will continue to do the current DuplicateHandle tricks. Review URL: http://codereview.chromium.org/20027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9369 0039d316-1c4b-4281-b951-d872f2087c98
* Commit my changes that simplify automation message unpacking.jam@chromium.org2009-02-061-0/+48
| | | | | | | TBR=amit Review URL: http://codereview.chromium.org/24002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9299 0039d316-1c4b-4281-b951-d872f2087c98
* Commit just the changes to make creating new IPC channel types easier.jam@chromium.org2009-02-041-8/+24
| | | | | | | | TBR=mpcomplete Review URL: http://codereview.chromium.org/21052 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9167 0039d316-1c4b-4281-b951-d872f2087c98
* Revert my change to get the tree green. Not sure why the tests became ↵jam@chromium.org2009-02-041-256/+191
| | | | | | | | | | flaky. I'll try to check them in again but in smaller chunks tomorrow. TBR=mpcomplete Review URL: http://codereview.chromium.org/21039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9132 0039d316-1c4b-4281-b951-d872f2087c98
* Make it easier/less work/less error-prone to create new IPC channel types ↵jam@chromium.org2009-02-041-191/+256
| | | | | | | | (i.e. renderer/plugin).Instead of having each message file include the internal one several times with different ifdefs, move that logic to ipc_message_macros.h. Also make the message class starting IDs come from an enum to ensure we don't use a value twice. I simplified the logging code a bit so we don't need X_messages.cc files.Clean up places that we were doing manual packing/unpacking. Most of this was in the automation code. I added a few new template functions to make it convenient to read the parameters from a message, and updated the code to use them.I also removed unnecessary includes of render/plugin_messages.h from headers to speed up compiling.I moved the traits of IPC structs beside the struct definition to make it more apparent what's going on, so we avoid people modifying the struct and forgetting to update the traits.Amit: please look at chrome/test/automation/tab_proxy.ccMarc-Antoine: chrome/browser/printing/*Matt: the rest Review URL: http://codereview.chromium.org/20015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9123 0039d316-1c4b-4281-b951-d872f2087c98
* Move plugins to FilePaths, some cleanupavi@google.com2009-01-061-0/+19
| | | | | | Review URL: http://codereview.chromium.org/16456 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7588 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor the render widget unittest so it can be reused to create a render viewbrettw@chromium.org2009-01-051-1/+3
| | | | | | | | | | | | | | | | | unit test. Change the mock render thread to save all IPC messages it is asked to send so that tests can verify that the correct ones were sent. There are some new functions that support this checking. Plumb the form state change notification through the render view so that we will correctly update the form state to the browser. Write two RenderView unit tests. One arbitrarily tests OnLoadAlternateHTMLText which I used as a testcase for my testing framework. The other tests the above form state change notification. I had to expose the timeout of this message through the RenderView API so that the test can change it. Review URL: http://codereview.chromium.org/16482 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7549 0039d316-1c4b-4281-b951-d872f2087c98
* * Bring up render_mesages.cc on POSIX.jeremy@chromium.org2008-12-291-0/+18
| | | | | | | | | * Add Pickle::Read/WriteUint32 & ParamTraits<uint32>. * Removed NSEvent from WebInputEvent since it appears not to be needed anymore. Review URL: http://codereview.chromium.org/16479 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7484 0039d316-1c4b-4281-b951-d872f2087c98
* really fix the ifdefpinkerton@google.com2008-12-041-1/+1
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6367 0039d316-1c4b-4281-b951-d872f2087c98
* wrap logging with correct ifdefpinkerton@google.com2008-12-041-0/+2
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6366 0039d316-1c4b-4281-b951-d872f2087c98
* Try to reland the ipc code to see if the testsnsylvain@chromium.org2008-12-021-5/+11
| | | | | | | | | are going to break again. TBR:jeremy Review URL: http://codereview.chromium.org/13053 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6222 0039d316-1c4b-4281-b951-d872f2087c98
* We have a bunch of new ui_tests failures. I wantnsylvain@chromium.org2008-12-021-11/+5
| | | | | | | | | | to check if this change (6181) was the cause. I'm reverting. TBR:jeremy Review URL: http://codereview.chromium.org/12856 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6199 0039d316-1c4b-4281-b951-d872f2087c98
* * Add ipc_tests unittest target to xcode project.jeremy@chromium.org2008-12-011-5/+11
| | | | | | | | * Stub out ipc_channel_posix.cc to allow other code that depends on it to be compiled. * Cleanup some ipc code a bit to compile on gcc. * Remove unused IPC::Channel::ProcessPendingMessages() git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6181 0039d316-1c4b-4281-b951-d872f2087c98
* Eliminate CursorChromium's dependency on webkit/glue.darin@chromium.org2008-11-061-4/+10
| | | | | | | | | | | Also modified WidgetChromium to use ChromiumBridge instead of talking to ChromeClientChromium. I want to eliminate that fake interface in favor of just having our code talk directly to ChromeClientImpl, but that means a dependency on webkit/glue, so I needed to use ChromiumBridge. Long-term, I'd like to propose changes upstream to HostWindow and ChromeClient to avoid this usage of ChromiumBridge. The most impactful part of this CL is the change to move the enumeration of cursor types from WebCursor to PlatformCursor. This means that WebCursor consumers no longer have access to the type enumeration. I replaced that with helper functions on WebCursor. I think the result not only achieves the goal of breaking CursorChromium's dependency on webkit/glue but is also much cleaner. R=iyengar,eseidel Review URL: http://codereview.chromium.org/9072 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4846 0039d316-1c4b-4281-b951-d872f2087c98
* Takes steps to make our PlatformScreen implementation more portable.darin@chromium.org2008-10-311-24/+0
| | | | | | | | | | | | | | | | | | Introduces ChromiumBridge as a means for our WebCore port to depend on the embedder indirectly. This will be extended to support the rest of our port. WebWidgetImpl and ChromeClientImpl both needed to have their platformWindow getter implemented. This fixes a regression related to the most recent merge. Removes the orphaned Language.cpp (see the real one in the platform/chromium directory. Changed webkit_glue::GetMonitorInfoForWindow to webkit_glue::GetScreenInfo. This resulted in a varied amount of plumbing changes. It also pushes the platform specific bits up into the browser where they belong. ScreenInfo is a struct that is part of the webkit/glue API. R=dglazkov,eseidel Review URL: http://codereview.chromium.org/8761 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4335 0039d316-1c4b-4281-b951-d872f2087c98
* Move Time, TimeDelta and TimeTicks into namespace base.dsh@google.com2008-10-271-6/+6
| | | | | | Review URL: http://codereview.chromium.org/7995 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4022 0039d316-1c4b-4281-b951-d872f2087c98
* Patch by Thatcher Ulrich <tulrich@google.com>.ojan@google.com2008-10-091-0/+34
| | | | | | | | | | | | | | | Implement "iframe shim" behavior for windowed plugins. In FF and IE on windows, iframes are implemented as native HWNDs. This has the side effect that iframes display on top of windowed plugins. This side effect has long been known as a workaround for allowing HTML elements to appear above plugin content. BUG=1788 Review URL: http://codereview.chromium.org/7032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3137 0039d316-1c4b-4281-b951-d872f2087c98
* Adding a UI test to catch the crash described in issue 1341577.This test is ↵finnur@google.com2008-08-271-0/+25
| | | | | | disabled, and will be turned on once we fix the issue.I added to TabProxy the ability to do FindNext, which was necessary to reproduce the crash, and changed the automation IPC to take a FindInPageRequest struct, which makes it identical to the IPC we pass to render_view.BUG=1341577 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1425 0039d316-1c4b-4281-b951-d872f2087c98
* Use a more compact license header in source files.license.bot2008-08-241-28/+4
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1287 0039d316-1c4b-4281-b951-d872f2087c98
* Adds capabilities for IPC messages of type long, for the primary purpose of ↵klink@google.com2008-08-221-0/+14
| | | | | | accessibility related communication. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1263 0039d316-1c4b-4281-b951-d872f2087c98
* Use %ls instead of %s in wprintf format strings for wchar_t fields.mmentovai@google.com2008-08-141-1/+1
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@846 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup a few files, reduce the number of includes.maruel@google.com2008-08-121-80/+20
| | | | | | | | Applied glint. No code change, just moving around. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@713 0039d316-1c4b-4281-b951-d872f2087c98
* Reapply 379 since it wasn't the issue with the build breakage.maruel@google.com2008-08-051-182/+34
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@393 0039d316-1c4b-4281-b951-d872f2087c98
* Revert change 379 to see if it fixes the build. Please reapply when it's green.nsylvain@google.com2008-08-051-34/+182
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@388 0039d316-1c4b-4281-b951-d872f2087c98
* Reduce the quantity of includes and template specialization in ↵maruel@google.com2008-08-051-182/+34
| | | | | | ipc_message_utils.h. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@379 0039d316-1c4b-4281-b951-d872f2087c98
* Add chrome to the repository.initial.commit2008-07-261-0/+1414
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15 0039d316-1c4b-4281-b951-d872f2087c98