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

Side by Side Diff: third_party/WebKit/Source/core/mojo/MojoHandle.cpp

Issue 2707243006: [SharedArrayBuffer] Prevent SharedArrayBuffer being used in Web APIs (Closed)
Patch Set: update comment, add TODO Created 3 years, 8 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "core/mojo/MojoHandle.h" 5 #include "core/mojo/MojoHandle.h"
6 6
7 #include "bindings/core/v8/ArrayBufferOrArrayBufferView.h" 7 #include "bindings/core/v8/ArrayBufferOrArrayBufferView.h"
8 #include "bindings/core/v8/ScriptState.h" 8 #include "bindings/core/v8/ScriptState.h"
9 #include "core/dom/DOMArrayBuffer.h" 9 #include "core/dom/DOMArrayBuffer.h"
10 #include "core/dom/DOMArrayBufferView.h" 10 #include "core/dom/DOMArrayBufferView.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 handles.begin(), handles.end(), raw_handles.begin(), 54 handles.begin(), handles.end(), raw_handles.begin(),
55 [](MojoHandle* handle) { return handle->handle_.release().value(); }); 55 [](MojoHandle* handle) { return handle->handle_.release().value(); });
56 56
57 const void* bytes = nullptr; 57 const void* bytes = nullptr;
58 uint32_t num_bytes = 0; 58 uint32_t num_bytes = 0;
59 if (buffer.isArrayBuffer()) { 59 if (buffer.isArrayBuffer()) {
60 DOMArrayBuffer* array = buffer.getAsArrayBuffer(); 60 DOMArrayBuffer* array = buffer.getAsArrayBuffer();
61 bytes = array->Data(); 61 bytes = array->Data();
62 num_bytes = array->ByteLength(); 62 num_bytes = array->ByteLength();
63 } else { 63 } else {
64 DOMArrayBufferView* view = buffer.getAsArrayBufferView(); 64 DOMArrayBufferView* view = buffer.getAsArrayBufferView().View();
65 bytes = view->BaseAddress(); 65 bytes = view->BaseAddress();
66 num_bytes = view->byteLength(); 66 num_bytes = view->byteLength();
67 } 67 }
68 68
69 return MojoWriteMessage(handle_->value(), bytes, num_bytes, 69 return MojoWriteMessage(handle_->value(), bytes, num_bytes,
70 raw_handles.Data(), raw_handles.size(), 70 raw_handles.Data(), raw_handles.size(),
71 MOJO_WRITE_MESSAGE_FLAG_NONE); 71 MOJO_WRITE_MESSAGE_FLAG_NONE);
72 } 72 }
73 73
74 void MojoHandle::readMessage(const MojoReadMessageFlags& flags_dict, 74 void MojoHandle::readMessage(const MojoReadMessageFlags& flags_dict,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 if (options_dict.allOrNone()) 110 if (options_dict.allOrNone())
111 flags |= MOJO_WRITE_DATA_FLAG_ALL_OR_NONE; 111 flags |= MOJO_WRITE_DATA_FLAG_ALL_OR_NONE;
112 112
113 const void* elements = nullptr; 113 const void* elements = nullptr;
114 uint32_t num_bytes = 0; 114 uint32_t num_bytes = 0;
115 if (buffer.isArrayBuffer()) { 115 if (buffer.isArrayBuffer()) {
116 DOMArrayBuffer* array = buffer.getAsArrayBuffer(); 116 DOMArrayBuffer* array = buffer.getAsArrayBuffer();
117 elements = array->Data(); 117 elements = array->Data();
118 num_bytes = array->ByteLength(); 118 num_bytes = array->ByteLength();
119 } else { 119 } else {
120 DOMArrayBufferView* view = buffer.getAsArrayBufferView(); 120 DOMArrayBufferView* view = buffer.getAsArrayBufferView().View();
121 elements = view->BaseAddress(); 121 elements = view->BaseAddress();
122 num_bytes = view->byteLength(); 122 num_bytes = view->byteLength();
123 } 123 }
124 124
125 MojoResult result = 125 MojoResult result =
126 MojoWriteData(handle_->value(), elements, &num_bytes, flags); 126 MojoWriteData(handle_->value(), elements, &num_bytes, flags);
127 result_dict.setResult(result); 127 result_dict.setResult(result);
128 result_dict.setNumBytes(result == MOJO_RESULT_OK ? num_bytes : 0); 128 result_dict.setNumBytes(result == MOJO_RESULT_OK ? num_bytes : 0);
129 } 129 }
130 130
(...skipping 27 matching lines...) Expand all
158 if (options_dict.peek()) 158 if (options_dict.peek())
159 flags |= MOJO_READ_DATA_FLAG_PEEK; 159 flags |= MOJO_READ_DATA_FLAG_PEEK;
160 160
161 void* elements = nullptr; 161 void* elements = nullptr;
162 unsigned num_bytes = 0; 162 unsigned num_bytes = 0;
163 if (buffer.isArrayBuffer()) { 163 if (buffer.isArrayBuffer()) {
164 DOMArrayBuffer* array = buffer.getAsArrayBuffer(); 164 DOMArrayBuffer* array = buffer.getAsArrayBuffer();
165 elements = array->Data(); 165 elements = array->Data();
166 num_bytes = array->ByteLength(); 166 num_bytes = array->ByteLength();
167 } else { 167 } else {
168 DOMArrayBufferView* view = buffer.getAsArrayBufferView(); 168 DOMArrayBufferView* view = buffer.getAsArrayBufferView().View();
169 elements = view->BaseAddress(); 169 elements = view->BaseAddress();
170 num_bytes = view->byteLength(); 170 num_bytes = view->byteLength();
171 } 171 }
172 172
173 MojoResult result = 173 MojoResult result =
174 MojoReadData(handle_->value(), elements, &num_bytes, flags); 174 MojoReadData(handle_->value(), elements, &num_bytes, flags);
175 result_dict.setResult(result); 175 result_dict.setResult(result);
176 result_dict.setNumBytes(result == MOJO_RESULT_OK ? num_bytes : 0); 176 result_dict.setNumBytes(result == MOJO_RESULT_OK ? num_bytes : 0);
177 } 177 }
178 178
(...skipping 26 matching lines...) Expand all
205 mojo::Handle handle; 205 mojo::Handle handle;
206 MojoResult result = MojoDuplicateBufferHandle(handle_->value(), &options, 206 MojoResult result = MojoDuplicateBufferHandle(handle_->value(), &options,
207 handle.mutable_value()); 207 handle.mutable_value());
208 result_dict.setResult(result); 208 result_dict.setResult(result);
209 if (result == MOJO_RESULT_OK) { 209 if (result == MOJO_RESULT_OK) {
210 result_dict.setHandle(MojoHandle::Create(mojo::MakeScopedHandle(handle))); 210 result_dict.setHandle(MojoHandle::Create(mojo::MakeScopedHandle(handle)));
211 } 211 }
212 } 212 }
213 213
214 } // namespace blink 214 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/html/ImageData.cpp ('k') | third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698