summaryrefslogtreecommitdiffstats
path: root/ipc/ipc_message.h
Commit message (Collapse)AuthorAgeFilesLines
* IPC: Get rid of FileDescriptor usage from FileDescriptorSet and Messagemorrita2014-09-241-7/+4
| | | | | | | | | | | | | | | This is a step toward to killing FileDescriptor. This change lets FiileDescriptorSet have both Files (for owning fds) and PlatformFiles (for non-owning fds). Doing this, we no longer need FileDescriptor which provides |auto_close| flag. BUG=415294 TEST=ipc_tests, ipc_mojo_unittests R=agl@chromium.org, jam@hcromium.org, viettrungluu@chromium.org Review URL: https://codereview.chromium.org/583473002 Cr-Commit-Position: refs/heads/master@{#296498}
* Introduce ChannelMojomorrita@chromium.org2014-08-041-0/+1
| | | | | | | | | | | | | | | | | | This CL introduces ChannelMojo IPC::Channel implementation and optionally applies it for renderer-browser IPC channel. Current stability is like 5-seconds browser and There are rough edges. It often closes the channel so needs to be more robust. Even though the level of stability, having it in the tree will helps team to try and improve it. BUG=377980 R=darin@chromium.org,jam@chromium.org,viettrungluu@chromium.org TEST=ipc_channel_mojo_unittest.cc Review URL: https://codereview.chromium.org/382333002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287402 0039d316-1c4b-4281-b951-d872f2087c98
* Make IPC::Channel polymorphicmorrita@chromium.org2014-06-061-0/+3
| | | | | | | | | | | | | | This change makes each platform specific ChannelImpl into a subclass of Channel: ChannelPosix, ChannelWin, ChannelNacl. delegated functions are now virtual. TEST=none BUG=377980 R=darin@chromium.org, jam@chromium.org Review URL: https://codereview.chromium.org/310293002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275505 0039d316-1c4b-4281-b951-d872f2087c98
* Ensure that any IPC sent from a child process that couldn't be deserialized ↵jam@chromium.org2014-05-151-1/+12
| | | | | | | | | | | | causes that process to be killed. Today we do this only for a subset of IPCs and not all process types. R=jar@chromium.org, tsepez@chromium.org Review URL: https://codereview.chromium.org/283313002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270839 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for passing an arbitrary parameter to an IPC message handler. ↵jam@chromium.org2014-05-131-20/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The motivation is for WebContentsObserver to pass RenderFrameHost* to message handlers easily. As an example, an observer would look like this: bool FooWebContentsObserver::OnMessageReceived( const IPC::Message& message, RenderFrameHost* render_frame_host) { IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(FooWebContentsObserver, message, RenderFrameHost, render_frame_host) IPC_MESSAGE_HANDLER(FooHostMsg_Bar, OnBar) . . . void FooWebContentsObserver::OnBar(RenderFrameHost* render_frame_host, ... You can of course still have dispatchers without the extra parameter as before. This is generalizing the existing code that allows an IPC message handler to have a "const IPC::Message& message) first parameter to get access to the IPC. Sync IPCs don't support this yet. It's a lot more work because for them we conveniently reuse tuple's DispatchToMethod. This isn't urgent yet, since sync IPCs aren't dispatched on the UI thread for the most part because of NPAPI and Windows, so punting on this for now. BUG=304341 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/283623002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270237 0039d316-1c4b-4281-b951-d872f2087c98
* IPC: Restrict 'toplevel' to truly toplevel events.epenner@chromium.org2014-05-021-2/+2
| | | | | | | | | | | | | | | | | | | | These traces shouldn't ever be top level: - "SyncChannel::SendWithTimeout" - "ChannelProxy::Context::OnDispatchMessage" One is sending an IPC (contained within RunTask), and one is recieving an IPC that was forwarded (also contained within RunTask). This brings back the 'ipc' label for all ipc related events, and just adds 'toplevel' to the one IPC trace that is actually toplevel, "ChannelReader::DispatchInputData". BUG=None. Review URL: https://codereview.chromium.org/237113006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267923 0039d316-1c4b-4281-b951-d872f2087c98
* Make flow event traces disabled-by-defaultfmeawad@chromium.org2014-02-061-2/+4
| | | | | | | | | | Currently all flow events are in the category "toplevel.flow", they originated from "ipc" and "task" categories. BUG=338427 Review URL: https://codereview.chromium.org/148173011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249450 0039d316-1c4b-4281-b951-d872f2087c98
* Revert https://src.chromium.org/viewvc/chrome?view=rev&revision=231330bbudge@chromium.org2013-11-041-4/+15
| | | | | | | | | | This is a speculative revert to see if it's the cause of hanging renderers. BUG=313112 Review URL: https://codereview.chromium.org/57783006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232819 0039d316-1c4b-4281-b951-d872f2087c98
* Remove unused IPC::Message priority.bbudge@chromium.org2013-10-281-15/+4
| | | | | | | | | | | | | | | | | Removes the PriorityValue enum and field from IPC::Message. This doesn't appear to be used anywhere. Changes the data message ctor to take a size_t data_len parameter. This works around an ambiguity problem with the main ctor, which has a similar signature and would require lots of futzing with our test code to fix. To make this work, the matching Pickle constructor is also changed to take a size_t data_len parameter. BUG=194304 Review URL: https://codereview.chromium.org/35643005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231330 0039d316-1c4b-4281-b951-d872f2087c98
* Get rid of ipc_sender.h include in ipc_message.h.viettrungluu@chromium.org2012-12-141-6/+0
| | | | | | Review URL: https://codereview.chromium.org/11574040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173238 0039d316-1c4b-4281-b951-d872f2087c98
* Enable IPC logging for component buildsjochen@chromium.org2012-11-281-4/+1
| | | | | | | | | | | | Also fix a Mac test for the about ipc controller - it was just not executed on the bots before. BUG=none TEST=win dbg still compiles, no mac unit_tests failures Review URL: https://chromiumcodereview.appspot.com/11280186 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@169934 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 169453 - Enable IPC logging for component builddalecurtis@google.com2012-11-261-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Since I refactored the registering of IPC loggers to go through a proper API, there's no dependency from ipc to chrome anymore, and we can enable it in debug builds BUG=none TEST=compiles in debug build ------------------------------------------------------ Caused "unresolved external" link errors on Windows Debug builds: http://build.chromium.org/p/chromium.win/builders/Win%20Builder%20%28dbg%29/builds/5494/steps/compile/logs/stdio Possibly the cause of various "malloc" related failures seen elsewhere in the tree: http://build.chromium.org/p/chromium.mac/buildstatus?builder=Mac10.6%20Sync&number=25248 Review URL: https://chromiumcodereview.appspot.com/11415122 TBR=jochen@chromium.org Review URL: https://codereview.chromium.org/11428013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@169486 0039d316-1c4b-4281-b951-d872f2087c98
* Enable IPC logging for component buildjochen@chromium.org2012-11-261-4/+1
| | | | | | | | | | | | | | Since I refactored the registering of IPC loggers to go through a proper API, there's no dependency from ipc to chrome anymore, and we can enable it in debug builds BUG=none TEST=compiles in debug build Review URL: https://chromiumcodereview.appspot.com/11415122 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@169453 0039d316-1c4b-4281-b951-d872f2087c98
* Trace PostTasks from post to run.jbates@chromium.org2012-09-181-3/+7
| | | | | | | | | | | | To do this properly, we need a new type of trace event "FLOW" which will be drawn as lines in about:tracing from BEGIN to END. Also instruments SequencedWorkerPool and ChannelReader::DispatchInputData, which were not currently traced. BUG=79942 Review URL: https://codereview.chromium.org/10913242 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157288 0039d316-1c4b-4281-b951-d872f2087c98
* Fix trace event macro naming issuejbates@chromium.org2012-09-111-1/+1
| | | | | | Review URL: https://chromiumcodereview.appspot.com/10908183 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155955 0039d316-1c4b-4281-b951-d872f2087c98
* fix gprecise gcc build errorjbates@chromium.org2012-09-051-1/+1
| | | | | | | | | BUG=146454 TBR=oshima Review URL: https://chromiumcodereview.appspot.com/10918062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154873 0039d316-1c4b-4281-b951-d872f2087c98
* Add async trace events to trace progress of IPC messagesjbates@chromium.org2012-09-041-7/+15
| | | | | | | | BUG=79942 Review URL: https://chromiumcodereview.appspot.com/10919023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154840 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the rest of #pragma once in one big CL.ajwong@chromium.org2012-07-111-1/+0
| | | | | | | | | For context see this thread: https://groups.google.com/a/chromium.org/forum/?fromgroups#!topic/chromium-dev/RMcVNGjB4II TBR=thakis,pkasting,jam git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146163 0039d316-1c4b-4281-b951-d872f2087c98
* Remove Message::Sender and Channel::Listener typedefs.brettw@chromium.org2012-06-291-7/+2
| | | | | | | | | | | This patch fixes the remaining users to use the new names for these classes. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10698057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145005 0039d316-1c4b-4281-b951-d872f2087c98
* Make the serialization of IPC::Messages inside other IPC::Messages independentbrettw@chromium.org2012-06-291-1/+9
| | | | | | | | | | | | | | of the platform. This is necessary for sending nested messages between nacl (which the IPC system thinks is posix and so has extra header goo) and a Windows client app (which doesn't have this stuff). BUG= Review URL: https://chromiumcodereview.appspot.com/10667002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@144840 0039d316-1c4b-4281-b951-d872f2087c98
* Separate out IPC::Message::Sender and Channel::Listener into a separate class.brettw@chromium.org2012-06-111-11/+8
| | | | | | | | | | | | | I fixed the places that did IPC::Channel::Sender (I don't even know how this compiled, but I presume this means the "Sender" base class of the "Channel" which ends up being right). We can fix the other users of this later. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10541065 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141534 0039d316-1c4b-4281-b951-d872f2087c98
* Initial implementation of an IPC adapter to expose Chrome IPC to Native Client.brettw@chromium.org2012-03-301-15/+18
| | | | | | | | | | | This provides an implementation of sendmsg and recvmsg approxinately to what we think NaCl will expose to Chrome. Since NaCl isn't ready yet in this regard, it's still a bit speculative. And there is no support for sending handles across which will be the tricky part. TEST=included unit test BUG=none Review URL: https://chromiumcodereview.appspot.com/9863005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129981 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor Pickle Read methods to use higher performance PickleIterator.jbates@chromium.org2012-03-071-1/+2
| | | | | | | | | | | | | | | | There was a lot of redundant error checking and initialization code in all Pickle Read methods because of the void** iterator type. This change replaces the void* iterator with PickleIterator, which encapsulates the read pointer so that less error checking and initialization code is needed for reading. PickleIterator has all the necessary data to do the actual reading. The advantage of having it provide Read methods (as opposed to leaving them solely in the Pickle interface) is that the callers do not need to pass around the const Pickle* once they have a PickleIterator. Followup CLs will refactor the call sites to remove const Pickle* arguments where they are now unnecessary. Then the Pickle::Read* methods can be removed entirely. The alternative approach would have been to change the Pickle::Read methods to non-const and remove the iterator parameter (making Read methods advance an internal read pointer). Unfortunately, the const Read with iterator design is entrenched throughout the chromium code, making this a much more complex change with the same performance outcome. BUG=13108 Review URL: https://chromiumcodereview.appspot.com/9447084 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125447 0039d316-1c4b-4281-b951-d872f2087c98
* Make IPC_MESSAGE_EXPORT more robust.thakis@chromium.org2012-02-211-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, files that want to export ipc messages currently do #undef IPC_MESSAGE_EXPORT #define IPC_MESSAGE_EXPORT CONTENT_EXPORT at the top, and files that don't want to export ipc messages just do nothing. This is problematic if a cc file does #include "exported_messages.h" #include "not_exported_messages.h" because the second header file picks up the #define from the first file and declares all its messages as exported. In other translation units, where not_exported_messages.h is #included without another header above it, the messages will get default visibility – so the same class ends up with different visibilities in different translation units. Instead, let ipc_message_macros.h #undef IPC_MESSAGE_EXPORT outside of the include guard, so that all files that don't set the define see it as defined to nothing. (Idea from jam@) Also disable about:ipc in the component build, since ipc logging adds a dependency from chrome on all ipc message classes, so they would all have to be exported. BUG=90078 TEST=No linker errors about IPC messages when doing components build on mac. (Other linker errors remain for now.) TBR=brettw Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=122689 Review URL: http://codereview.chromium.org/9425006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122828 0039d316-1c4b-4281-b951-d872f2087c98
* Create ipc.dll.darin@chromium.org2011-08-151-5/+6
| | | | | | Review URL: http://codereview.chromium.org/7633042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96820 0039d316-1c4b-4281-b951-d872f2087c98
* Move some files from base to base/memory.levin@chromium.org2011-03-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | raw_scoped_refptr_mismatch_checker.h ref_counted.cc ref_counted.h ref_counted_memory.cc ref_counted_memory.h ref_counted_unittest.cc scoped_callback_factory.h scoped_comptr_win.h scoped_handle.h scoped_native_library.cc scoped_native_library.h scoped_native_library_unittest.cc scoped_nsobject.h scoped_open_process.h scoped_ptr.h scoped_ptr_unittest.cc scoped_temp_dir.cc scoped_temp_dir.h scoped_temp_dir_unittest.cc scoped_vector.h singleton.h singleton_objc.h singleton_unittest.cc linked_ptr.h linked_ptr_unittest.cc weak_ptr.cc weak_ptr.h weak_ptr_unittest.cc BUG=None TEST=Compile Review URL: http://codereview.chromium.org/6714032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79524 0039d316-1c4b-4281-b951-d872f2087c98
* Create a message filter for message port and worker messages. This allows a ↵jam@chromium.org2010-12-211-8/+10
| | | | | | | | nice cleanup of getting rid of the notifications when RenderMessageFilter and WorkerProcessHost go away. SafeBrowsingResourceHandler doesn't need it anymore as well, since it now overrides OnRequestClosed() which does the same thing. Review URL: http://codereview.chromium.org/6055002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69862 0039d316-1c4b-4281-b951-d872f2087c98
* ipc: Simplify the magic required to create IPC message headers.This gets rid ↵jam@chromium.org2010-12-081-1/+1
| | | | | | | | | of having to include the files in a magic place because of xcode dependency issues, and just makes it simpler to create new IPC message classes. It also gets rid of including the X_messages_internal.h file multiple times, which simplifies things and should make the build a little faster. In a future change, I will remove the "internal.h" files since they're no longer needed. Review URL: http://codereview.chromium.org/5526008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68664 0039d316-1c4b-4281-b951-d872f2087c98
* Remove all wstrings from the IPC logging subsystem.erg@google.com2010-08-181-4/+4
| | | | | | | | | | | | | | | | Changes all IPC Log methods from wstring to string. All static logging debug data changed from wchar[] to char[]. Various string conversion/numeric headers no longer need to be included in ipc_message_utils.h and have been removed (and added in all implementation files that require them). BUG=none TEST=none Review URL: http://codereview.chromium.org/3159013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56563 0039d316-1c4b-4281-b951-d872f2087c98
* `#pragma once` for app, base, chrome, gfx, ipc, net, skia, viewsthakis@chromium.org2010-07-261-0/+1
| | | | | | | | | BUG=50273 TEST=everything still builds, build is 10% faster on windows, same speed on mac/linux TBR: erg git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53716 0039d316-1c4b-4281-b951-d872f2087c98
* linux: uncontroversial cleanups found by clangevan@chromium.org2010-02-021-1/+1
| | | | | | | | Part of a larger patch to use clang to warning-check our code. Review URL: http://codereview.chromium.org/561008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37781 0039d316-1c4b-4281-b951-d872f2087c98
* Fixing valgrind issues.apatrick@google.com2009-12-051-0/+1
| | | | | | | | | TEST=none BUG=none Review URL: http://codereview.chromium.org/460081 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33892 0039d316-1c4b-4281-b951-d872f2087c98
* Added new IPC message class for CommandBuffer.apatrick@google.com2009-12-041-8/+8
| | | | | | | | | | Increased IPC message header type from 16 bits to 32 bits so it can accomodate more message classes. TEST=none BUG=none Review URL: http://codereview.chromium.org/399013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33832 0039d316-1c4b-4281-b951-d872f2087c98
* Split the IPC code into ipc/agl@chromium.org2009-07-221-0/+279
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This splits the ipc code from the common project. The 'common' project pulls in all of webkit, the v8 bindings, skia, googleurl, and a number of other projects which makes it very difficult to deal with especially for external projects wanting just to use some of Chromium's infrastructure. This puts the ipc code into its top-level ipc/ directory with a dependency only on base. The common project depends on the new ipc/ipc.gyp:ipc target so that all projects currently pulling common in to get the IPC code still have it available. This mostly follows agl's pre-gyp attempt to do this which was r13062. Known issues: - Currently a number of projects depend on chrome/chrome.gyp:common in order to use the IPC infrastructure. Rather than fixing all of these dependencies I have made common depend on ipc/ipc.gyp:ipc and added "ipc" to the include_rules section of DEPS so that checkdeps.py doesn't complain. Over time projects that need IPC should depend on the IPC project themselves and dependencies on common removed, although I don't think many projects that need IPC will be able to get away without common currently. - ipc/ipc_message_macros.h still has #include "chrome/common/..." inside of a ipc/ should not refer to files in chrome/... now. I'm not sure how to resolve this since it's really an IDE bug - the named pipe name (windows+linux) and the logging event name (all) + env variable (posix) refer explicitly to 'Chrome' which somewhat hurts the illusion of ipc/ being an independent library. I think this should be examined in a subsequent, much smaller patch. - I've eliminated the IPC.SendMsgCount counter since it was implemented in a way to create a dependency from ipc/ to chrome/common/chrome_counters. This is the same approach that r13062 took. http://codereview.chromium.org/155905 (Patch from James Robinson) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21342 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Move IPC code to ipc/"agl@chromium.org2009-04-031-279/+0
| | | | | | | 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-0/+279
(No review URL: Rietvelt couldn't cope) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13062 0039d316-1c4b-4281-b951-d872f2087c98