5462bc6318b4b70e7a58c66994e2bd79f59d9739 |
|
05-Nov-2011 |
Jeff Brown <jeffbrown@google.com> |
Fix a leak in Parcel::writeBlob. Was mistakenly assuming that Parcel::writeFileDescriptor took ownership of the fd that was passed in. It does not! Added some comments and a default parameter to allow the caller to specify whether it wishes the Parcel to take ownership. Bug: 5563374 Change-Id: I5a12f51d582bf246ce90133cce7690bb9bca93f6
/frameworks/base/libs/binder/Parcel.cpp
|
0cde89f5f025b7826be009ebb9673b970e180e32 |
|
10-Oct-2011 |
Jeff Brown <jeffbrown@google.com> |
Use ashmem for CursorWindows. Bug: 5332296 The memory dealer introduces additional delays for reclaiming the memory owned by CursorWindows because the Binder object must be finalized. Using ashmem instead gives CursorWindow more direct control over the lifetime of the shared memory region. The provider now allocates the CursorWindows and returns them to clients with a read-only protection bit set on the ashmem region. Improved the encapsulation of CursorWindow. Callers shouldn't need to care about details like how string fields are allocated. Removed the compile-time configuration of string and numeric storage modes to remove some dead weight. Change-Id: I07c2bc2a9c573d7e435dcaecd269d25ea9807acd
/frameworks/base/libs/binder/Parcel.cpp
|
c04db7e06737c5b9bae276ac462858d44002672e |
|
04-Oct-2011 |
Dianne Hackborn <hackbod@google.com> |
Fix handling of "allow fds" state. Didn't take into account nesting of bundles. Boo. Change-Id: Ic8cf21ad8d6f4938a3e105128624c9d162310d01
/frameworks/base/libs/binder/Parcel.cpp
|
6579a9d6fe2302fa149452f66c4062ebc60c2523 |
|
24-Sep-2011 |
Jeff Brown <jeffbrown@google.com> |
Transfer large bitmaps using ashmem. Bug: 5224703 Change-Id: If385a66adf4c6179a0bb49c0e6d09a9567e23808
/frameworks/base/libs/binder/Parcel.cpp
|
9ecebbfbf768fd63e9a6c9a09c86d81c7737ee2d |
|
29-Sep-2011 |
Dianne Hackborn <hackbod@google.com> |
Add mechanism for Parcel to not allow FDs to be written to it. This is to help implement issue #5224703. Change-Id: I026a5890495537d15b57fe61227a640aac806d46
/frameworks/base/libs/binder/Parcel.cpp
|
b6377170960d40e66858d8b4d335a95eac773762 |
|
25-Sep-2011 |
Bart Sears <bsears@google.com> |
Revert "Transfer large bitmaps using ashmem. Bug: 5224703" This reverts commit 56c58f66b97d22fe7e7de1f7d9548bcbe1973029 This CL was causing the browser to crash when adding bookmarks, visiting the bookmarks page, and sharing pages (see bug http://b/issue?id=5369231
/frameworks/base/libs/binder/Parcel.cpp
|
56c58f66b97d22fe7e7de1f7d9548bcbe1973029 |
|
24-Sep-2011 |
Jeff Brown <jeffbrown@google.com> |
Transfer large bitmaps using ashmem. Bug: 5224703 Change-Id: Ic7481dd9f173986f085a8bbdcc59bbe9830d7a44
/frameworks/base/libs/binder/Parcel.cpp
|
b0dfade955f2e2e19a827ca2119f3c5d319a824a |
|
18-Apr-2011 |
Andreas Huber <andih@google.com> |
Merge "Parcel::appendFrom({const } Parcel *parcel, size_t, size_t)"
|
0ffc988a7f47013805d5abeed1c20f159b3bd799 |
|
14-Apr-2011 |
Dianne Hackborn <hackbod@google.com> |
Rewrite battery history storage. We now write battery history directly into a buffer, instead of creating objects. This allows for more efficient storage; later it can be even better because we can only write deltas. The old code is still there temporarily for validation. Change-Id: I9707d4d8ff30855be8ebdc93bc078911040d8e0b
/frameworks/base/libs/binder/Parcel.cpp
|
0a47f4f711514ceb3e5f6d3ecdbc4c74f7b3bbef |
|
13-Apr-2011 |
Andreas Huber <andih@google.com> |
Parcel::appendFrom({const } Parcel *parcel, size_t, size_t) As far as I can tell "parcel" isn't actually modified by the implementation. Change-Id: Ib806eefdc13c97b932773e1dc9ca3a4aad4422b2
/frameworks/base/libs/binder/Parcel.cpp
|
b803c04cdaf3ce9dec387a874cabf141f0d8500f |
|
15-Dec-2010 |
Pravat Dalbehera <pravat.dalbehera@sonyericsson.com> |
Fix for writing empty strings to Parcel::writeString8() If writeString8 is called with the following sequence: writeString8(String8("")); writeString8(String8("TempString")); Then in the readString8, the 2nd String i.e. "TempString" is not read, instead an empty string is read. The bug comes because of the write call for String8("") where there are no String bytes present. In the write Statement, an extra ‘\0’ is written. During the Marshalling, Following bytes are written: 1 2 3 4 5 ... 0x0 0x0 0xB ‘T’ ‘e’ ... The readString8 function has a check that, if String length is 0, don’t read anything. So the first byte is read as the length for the first string. The second byte i.e. ‘\0’ is read as the length for the second string and hence the second string becomes empty too. Change-Id: Id7acc0c80ae16e77be4331f1ddf69ea87e758420
/frameworks/base/libs/binder/Parcel.cpp
|
0234376503ce421c4b871d5d811c541f5094301a |
|
31-Aug-2010 |
Brad Fitzpatrick <bradfitz@android.com> |
Don't propagate StrictMode over one-way Binder calls. This was causing stack stitching problems where a one-way call with violations followed by a two-way call without violations was getting the previous one-way call's violation stack stitched on to the second caller's stack. The solution is a little more indirect than I would've liked (preserving the binder's onTransact flags until enforceInterface) but was seemingly necessary to work without changing the AIDL compiler. It should also be sufficiently cheap, since no new calls to thread-local IPCThreadState lookups were required. The additional work is just same-thread getter/setters on the existing IPCThreadState. Change-Id: I4b6db1d445c56e868e6d0d7be3ba6849f4ef23ae
/frameworks/base/libs/binder/Parcel.cpp
|
7bcad8a315f12bd6251a998781efac7b11c2ca84 |
|
27-Jul-2010 |
Brad Fitzpatrick <bradfitz@android.com> |
Replace several IPCThreadState::get() lookups with one. Also, make StrictMode's ThreadLocal final. Change-Id: I08d400ed254fa67bb7a3dae1227f205a54c00df0
/frameworks/base/libs/binder/Parcel.cpp
|
5b747191ff8ad43a54d41faf50436271d1d7fcc8 |
|
12-Jul-2010 |
Brad Fitzpatrick <bradfitz@android.com> |
StrictMode: gather and return violating stacks in Binder replies Now, when Thread A has a strict mode policy in effect and does a Binder call to Thread B (most likely in another process), the strict mode policy is passed along, but with the GATHER penalty bit set which overrides other policies and instead gathers all offending stack traces to a threadlocal which are then written back in the Parcel's reply header. Change-Id: I7d4497032a0609b37b1a2a15855f5c929ba0584d
/frameworks/base/libs/binder/Parcel.cpp
|
727de40c6bc7c6521a0542ea9def5d5c7b1c5e06 |
|
08-Jul-2010 |
Brad Fitzpatrick <bradfitz@android.com> |
More StrictMode work, keeping Binder & BlockGuard's thread-locals in-sync. Change-Id: Ia67cabcc17a73a0f15907ffea683d06bc41b90e5
/frameworks/base/libs/binder/Parcel.cpp
|
c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6 |
|
14-Jul-2010 |
Brad Fitzpatrick <bradfitz@android.com> |
Add Parcel::readExceptionCode() and Parcel::writeNoException() Add native Parcel methods analogous to the Java versions. Currently, these don't do much, but upcoming StrictMode work changes the RPC calling conventions in some cases, so it's important that everybody uses these consistently, rather than having a lot of code trying to parse RPC responses out of Parcels themselves. As a summary, the current convention that Java Binder services use is to prepend the reply Parcel with an int32 signaling the exception status: 0: no exception -1: Security exception -2: Bad Parcelable -3: ... -4: ... -5: ... ... followed by Parceled String if the exception code is non-zero. With an upcoming change, it'll be the case that a response Parcel can, non-exceptionally return rich data in the header, and also return data to the caller. The important thing to note in this new case is that the first int32 in the reply parcel *will not be zero*, so anybody manually checking for it with reply.readInt32() will get false negative failures. Short summary: If you're calling into a Java service and manually checking the exception status with reply.readInt32(), change it to reply.readExceptionCode(). Change-Id: I23f9a0e53a8cfbbd9759242cfde16723641afe04
/frameworks/base/libs/binder/Parcel.cpp
|
27b3a7a75960d026655f3acd1de8a672e80a5776 |
|
18-Jun-2010 |
Brad Fitzpatrick <bradfitz@android.com> |
Start of work on passing around StrictMode policy over Binder calls. This is (intendend to be) a no-op change. At this stage, Binder RPCs just have an additional uint32 passed around in the header, right before the interface name. But nothing is actually done with them yet. That value should right now always be 0. This now boots and seems to work. Change-Id: I135b7c84f07575e6b9717fef2424d301a450df7b
/frameworks/base/libs/binder/Parcel.cpp
|
c86727f5805f28fbd25da141c50fb6843f364f3a |
|
12-Feb-2010 |
Mathias Agopian <mathias@google.com> |
remove a dependency of GraphicBuffer (libui) on Parcel (libbinder). Add a Flattenable interface to libutils which can be used to flatten an object into bytestream + filedescriptor stream. Parcel is modified to handle Flattenable. And GraphicBuffer implements Flattenable. Except for the overlay classes libui is now independent of libbinder.
/frameworks/base/libs/binder/Parcel.cpp
|
2f10ae08d435b12e1798d93e0b90605717c66081 |
|
17-Aug-2009 |
Andreas Huber <andih@google.com> |
Support for marshalling pointers / intptr_t in Parcel. Some refactoring to eliminate code duplication in Parcel implementation.
/frameworks/base/libs/binder/Parcel.cpp
|
f1db4aec6569d7cf9e1fb84f1d9c1292032eac30 |
|
01-Aug-2009 |
Mathias Agopian <mathias@google.com> |
don't crash in Parcel when given a null (and therfore invalid) native_handle_t
/frameworks/base/libs/binder/Parcel.cpp
|
aaf834a284a025cedd8ec1cf01d09e1790c1dcf8 |
|
23-May-2009 |
Mathias Agopian <mathias@google.com> |
some work to try to reduce the code size of some native libraries - make sure that all binder Bn classes define a ctor and dtor in their respective library. This avoids duplication of the ctor/dtor in libraries where these objects are instantiated. This is also cleaner, should we want these ctor/dtor to do something one day. - same change as above for some Bp classes and various other non-binder classes - moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere. - improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere - IBinder::getInterfaceDescriptor() now returns a "const String16&" instead of String16, which saves calls to String16 and ~String16 - implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called. The cache makes BpBinder bigger, so we need to figure out if we need this method at all.
/frameworks/base/libs/binder/Parcel.cpp
|
9f7d60cbfaa40bd78c0f4d5d4e3b8e8cf257e87a |
|
22-May-2009 |
Android (Google) Code Review <android-gerrit@google.com> |
am d50a458b: Merge change 2351 into donut Merge commit 'd50a458bb291801ab9fdc119301bc7b84b42a6e3' * commit 'd50a458bb291801ab9fdc119301bc7b84b42a6e3': Fix a major bug in Bundle when unparcelling from AIDL.
|
dfece80c790934e4413def863070ac0dd21f6e29 |
|
22-May-2009 |
Mathias Agopian <mathias@google.com> |
change 2115 wasn't merged properly into master. this fixes that. Merge change 2115 into donut * changes: bring the native_handle stuff back from master_gl Conflicts: libs/binder/Parcel.cpp
/frameworks/base/libs/binder/Parcel.cpp
|
0795272aa226f4e965968a03daddc53ce30b7cda |
|
20-May-2009 |
Mathias Agopian <mathias@google.com> |
move libbinder's header files under includes/binder
/frameworks/base/libs/binder/Parcel.cpp
|
25ba5b6564224dceefa086b5c439ef28dad530ca |
|
19-May-2009 |
Mathias Agopian <mathias@google.com> |
checkpoint: split libutils into libutils + libbinder
/frameworks/base/libs/binder/Parcel.cpp
|