Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Side by Side Diff: components/nacl/loader/nacl_ipc_adapter.cc

Issue 1004593005: base::RefCounted now DCHECKs when referenced from multiple threads. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix lots of tests using UnsafeRefCounted. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/nacl/loader/nacl_ipc_adapter.h" 5 #include "components/nacl/loader/nacl_ipc_adapter.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 225
226 NaClDesc* desc() { return desc_; } 226 NaClDesc* desc() { return desc_; }
227 227
228 private: 228 private:
229 NaClDesc* desc_; 229 NaClDesc* desc_;
230 DISALLOW_COPY_AND_ASSIGN(NaClDescWrapper); 230 DISALLOW_COPY_AND_ASSIGN(NaClDescWrapper);
231 }; 231 };
232 232
233 } // namespace 233 } // namespace
234 234
235 // TODO(mgiuca): Avoid using UnsafeRefCounted. http://crbug.com/469952.
235 class NaClIPCAdapter::RewrittenMessage 236 class NaClIPCAdapter::RewrittenMessage
236 : public base::RefCounted<RewrittenMessage> { 237 : public base::UnsafeRefCounted<RewrittenMessage> {
237 public: 238 public:
238 RewrittenMessage(); 239 RewrittenMessage();
239 240
240 bool is_consumed() const { return data_read_cursor_ == data_len_; } 241 bool is_consumed() const { return data_read_cursor_ == data_len_; }
241 242
242 void SetData(const NaClIPCAdapter::NaClMessageHeader& header, 243 void SetData(const NaClIPCAdapter::NaClMessageHeader& header,
243 const void* payload, size_t payload_length); 244 const void* payload, size_t payload_length);
244 245
245 int Read(NaClImcTypedMsgHdr* msg); 246 int Read(NaClImcTypedMsgHdr* msg);
246 247
247 void AddDescriptor(NaClDescWrapper* desc) { descs_.push_back(desc); } 248 void AddDescriptor(NaClDescWrapper* desc) { descs_.push_back(desc); }
248 249
249 size_t desc_count() const { return descs_.size(); } 250 size_t desc_count() const { return descs_.size(); }
250 251
251 private: 252 private:
252 friend class base::RefCounted<RewrittenMessage>; 253 friend class base::UnsafeRefCounted<RewrittenMessage>;
253 ~RewrittenMessage() {} 254 ~RewrittenMessage() {}
254 255
255 scoped_ptr<char[]> data_; 256 scoped_ptr<char[]> data_;
256 size_t data_len_; 257 size_t data_len_;
257 258
258 // Offset into data where the next read will happen. This will be equal to 259 // Offset into data where the next read will happen. This will be equal to
259 // data_len_ when all data has been consumed. 260 // data_len_ when all data has been consumed.
260 size_t data_read_cursor_; 261 size_t data_read_cursor_;
261 262
262 // Wrapped descriptors for transfer to untrusted code. 263 // Wrapped descriptors for transfer to untrusted code.
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 header.flags = msg.flags(); 808 header.flags = msg.flags();
808 header.num_fds = static_cast<uint16>(rewritten_msg->desc_count()); 809 header.num_fds = static_cast<uint16>(rewritten_msg->desc_count());
809 810
810 rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); 811 rewritten_msg->SetData(header, msg.payload(), msg.payload_size());
811 locked_data_.to_be_received_.push(rewritten_msg); 812 locked_data_.to_be_received_.push(rewritten_msg);
812 } 813 }
813 814
814 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { 815 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) {
815 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags); 816 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags);
816 } 817 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698