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

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: remove unused checks 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(), rawHandles.begin(), 54 handles.begin(), handles.end(), rawHandles.begin(),
55 [](MojoHandle* handle) { return handle->m_handle.release().value(); }); 55 [](MojoHandle* handle) { return handle->m_handle.release().value(); });
56 56
57 const void* bytes = nullptr; 57 const void* bytes = nullptr;
58 uint32_t numBytes = 0; 58 uint32_t numBytes = 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 numBytes = array->byteLength(); 62 numBytes = 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 numBytes = view->byteLength(); 66 numBytes = view->byteLength();
67 } 67 }
68 68
69 return MojoWriteMessage(m_handle->value(), bytes, numBytes, rawHandles.data(), 69 return MojoWriteMessage(m_handle->value(), bytes, numBytes, rawHandles.data(),
70 rawHandles.size(), MOJO_WRITE_MESSAGE_FLAG_NONE); 70 rawHandles.size(), MOJO_WRITE_MESSAGE_FLAG_NONE);
71 } 71 }
72 72
73 void MojoHandle::readMessage(const MojoReadMessageFlags& flagsDict, 73 void MojoHandle::readMessage(const MojoReadMessageFlags& flagsDict,
74 MojoReadMessageResult& resultDict) { 74 MojoReadMessageResult& resultDict) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 if (optionsDict.allOrNone()) 109 if (optionsDict.allOrNone())
110 flags |= MOJO_WRITE_DATA_FLAG_ALL_OR_NONE; 110 flags |= MOJO_WRITE_DATA_FLAG_ALL_OR_NONE;
111 111
112 const void* elements = nullptr; 112 const void* elements = nullptr;
113 uint32_t numBytes = 0; 113 uint32_t numBytes = 0;
114 if (buffer.isArrayBuffer()) { 114 if (buffer.isArrayBuffer()) {
115 DOMArrayBuffer* array = buffer.getAsArrayBuffer(); 115 DOMArrayBuffer* array = buffer.getAsArrayBuffer();
116 elements = array->data(); 116 elements = array->data();
117 numBytes = array->byteLength(); 117 numBytes = array->byteLength();
118 } else { 118 } else {
119 DOMArrayBufferView* view = buffer.getAsArrayBufferView(); 119 DOMArrayBufferView* view = buffer.getAsArrayBufferView().view();
120 elements = view->baseAddress(); 120 elements = view->baseAddress();
121 numBytes = view->byteLength(); 121 numBytes = view->byteLength();
122 } 122 }
123 123
124 MojoResult result = 124 MojoResult result =
125 MojoWriteData(m_handle->value(), elements, &numBytes, flags); 125 MojoWriteData(m_handle->value(), elements, &numBytes, flags);
126 resultDict.setResult(result); 126 resultDict.setResult(result);
127 resultDict.setNumBytes(result == MOJO_RESULT_OK ? numBytes : 0); 127 resultDict.setNumBytes(result == MOJO_RESULT_OK ? numBytes : 0);
128 } 128 }
129 129
(...skipping 27 matching lines...) Expand all
157 if (optionsDict.peek()) 157 if (optionsDict.peek())
158 flags |= MOJO_READ_DATA_FLAG_PEEK; 158 flags |= MOJO_READ_DATA_FLAG_PEEK;
159 159
160 void* elements = nullptr; 160 void* elements = nullptr;
161 unsigned numBytes = 0; 161 unsigned numBytes = 0;
162 if (buffer.isArrayBuffer()) { 162 if (buffer.isArrayBuffer()) {
163 DOMArrayBuffer* array = buffer.getAsArrayBuffer(); 163 DOMArrayBuffer* array = buffer.getAsArrayBuffer();
164 elements = array->data(); 164 elements = array->data();
165 numBytes = array->byteLength(); 165 numBytes = array->byteLength();
166 } else { 166 } else {
167 DOMArrayBufferView* view = buffer.getAsArrayBufferView(); 167 DOMArrayBufferView* view = buffer.getAsArrayBufferView().view();
168 elements = view->baseAddress(); 168 elements = view->baseAddress();
169 numBytes = view->byteLength(); 169 numBytes = view->byteLength();
170 } 170 }
171 171
172 MojoResult result = 172 MojoResult result =
173 MojoReadData(m_handle->value(), elements, &numBytes, flags); 173 MojoReadData(m_handle->value(), elements, &numBytes, flags);
174 resultDict.setResult(result); 174 resultDict.setResult(result);
175 resultDict.setNumBytes(result == MOJO_RESULT_OK ? numBytes : 0); 175 resultDict.setNumBytes(result == MOJO_RESULT_OK ? numBytes : 0);
176 } 176 }
177 177
(...skipping 26 matching lines...) Expand all
204 mojo::Handle handle; 204 mojo::Handle handle;
205 MojoResult result = MojoDuplicateBufferHandle(m_handle->value(), &options, 205 MojoResult result = MojoDuplicateBufferHandle(m_handle->value(), &options,
206 handle.mutable_value()); 206 handle.mutable_value());
207 resultDict.setResult(result); 207 resultDict.setResult(result);
208 if (result == MOJO_RESULT_OK) { 208 if (result == MOJO_RESULT_OK) {
209 resultDict.setHandle(MojoHandle::create(mojo::MakeScopedHandle(handle))); 209 resultDict.setHandle(MojoHandle::create(mojo::MakeScopedHandle(handle)));
210 } 210 }
211 } 211 }
212 212
213 } // namespace blink 213 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698