Home | History | Annotate | Download | only in patch
      1 diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc
      2 index e1289e7e1da0..aa718957cf26 100644
      3 --- a/base/memory/shared_memory_posix.cc
      4 +++ b/base/memory/shared_memory_posix.cc
      5 @@ -29,6 +30,8 @@
      6  
      7  #if defined(OS_ANDROID)
      8  #include "base/os_compat_android.h"
      9 +#endif
     10 +#if defined(OS_ANDROID) || defined(__ANDROID__)
     11  #include "third_party/ashmem/ashmem.h"
     12  #endif
     13  
     14 @@ -80,7 +83,7 @@ bool SharedMemory::CreateAndMapAnonymous(size_t size) {
     15    return CreateAnonymous(size) && Map(size);
     16  }
     17  
     18 -#if !defined(OS_ANDROID)
     19 +#if !defined(OS_ANDROID) && !defined(__ANDROID__)
     20  
     21  // Chromium mostly only uses the unique/private shmem as specified by
     22  // "name == L"". The exception is in the StatsTable.
     23 @@ -252,7 +255,7 @@ bool SharedMemory::Open(const std::string& name, bool read_only) {
     24        FileDescriptor(readonly_mapped_file, false), 0, shm_.GetGUID());
     25    return result;
     26  }
     27 -#endif  // !defined(OS_ANDROID)
     28 +#endif  // !defined(OS_ANDROID) && !defined(__ANDROID__)
     29  
     30  bool SharedMemory::MapAt(off_t offset, size_t bytes) {
     31    if (!shm_.IsValid())
     32 @@ -264,7 +267,7 @@ bool SharedMemory::MapAt(off_t offset, size_t bytes) {
     33    if (memory_)
     34      return false;
     35  
     36 -#if defined(OS_ANDROID)
     37 +#if defined(OS_ANDROID) || defined(__ANDROID__)
     38    // On Android, Map can be called with a size and offset of zero to use the
     39    // ashmem-determined size.
     40    if (bytes == 0) {
     41 @@ -277,19 +280,19 @@ bool SharedMemory::MapAt(off_t offset, size_t bytes) {
     42  
     43    // Sanity check. This shall catch invalid uses of the SharedMemory APIs
     44    // but will not protect against direct mmap() attempts.
     45 -  if (shm_.IsReadOnly()) {
     46 -    // Use a DCHECK() to call writable mappings with read-only descriptors
     47 -    // in debug builds immediately. Return an error for release builds
     48 -    // or during unit-testing (assuming a ScopedLogAssertHandler was installed).
     49 -    DCHECK(read_only_)
     50 -        << "Trying to map a region writable with a read-only descriptor.";
     51 -    if (!read_only_) {
     52 -      return false;
     53 -    }
     54 -    if (!shm_.SetRegionReadOnly()) {  // Ensure the region is read-only.
     55 -      return false;
     56 -    }
     57 -  }
     58 +  // if (shm_.IsReadOnly()) {
     59 +  //   // Use a DCHECK() to call writable mappings with read-only descriptors
     60 +  //   // in debug builds immediately. Return an error for release builds
     61 +  //   // or during unit-testing (assuming a ScopedLogAssertHandler was installed).
     62 +  //   DCHECK(read_only_)
     63 +  //       << "Trying to map a region writable with a read-only descriptor.";
     64 +  //   if (!read_only_) {
     65 +  //     return false;
     66 +  //   }
     67 +  //   if (!shm_.SetRegionReadOnly()) {  // Ensure the region is read-only.
     68 +  //     return false;
     69 +  //   }
     70 +  // }
     71  #endif
     72  
     73    memory_ = mmap(nullptr, bytes, PROT_READ | (read_only_ ? 0 : PROT_WRITE),
     74 @@ -334,7 +339,7 @@ SharedMemoryHandle SharedMemory::TakeHandle() {
     75    return handle_copy;
     76  }
     77  
     78 -#if !defined(OS_ANDROID)
     79 +#if !defined(OS_ANDROID) && !defined(__ANDROID__)
     80  void SharedMemory::Close() {
     81    if (shm_.IsValid()) {
     82      shm_.Close();
     83 @@ -374,6 +379,6 @@ SharedMemoryHandle SharedMemory::GetReadOnlyHandle() const {
     84    CHECK(readonly_shm_.IsValid());
     85    return readonly_shm_.Duplicate();
     86  }
     87 -#endif  // !defined(OS_ANDROID)
     88 +#endif  // !defined(OS_ANDROID) && !defined(__ANDROID__)
     89  
     90  }  // namespace base
     91