| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 class ExecutionContext; | 50 class ExecutionContext; |
| 51 | 51 |
| 52 class CORE_EXPORT Blob : public GarbageCollectedFinalized<Blob>, public ScriptWr
appable, public URLRegistrable { | 52 class CORE_EXPORT Blob : public GarbageCollectedFinalized<Blob>, public ScriptWr
appable, public URLRegistrable { |
| 53 DEFINE_WRAPPERTYPEINFO(); | 53 DEFINE_WRAPPERTYPEINFO(); |
| 54 public: | 54 public: |
| 55 static Blob* create(ExceptionState&) | 55 static Blob* create(ExceptionState&) |
| 56 { | 56 { |
| 57 return new Blob(BlobDataHandle::create()); | 57 return new Blob(BlobDataHandle::create()); |
| 58 } | 58 } |
| 59 | 59 |
| 60 static Blob* create(const Vector<ArrayBufferOrArrayBufferViewOrBlobOrString>
&, const BlobPropertyBag&, ExceptionState&); | 60 static Blob* create(const HeapVector<ArrayBufferOrArrayBufferViewOrBlobOrStr
ing>&, const BlobPropertyBag&, ExceptionState&); |
| 61 | 61 |
| 62 static Blob* create(PassRefPtr<BlobDataHandle> blobDataHandle) | 62 static Blob* create(PassRefPtr<BlobDataHandle> blobDataHandle) |
| 63 { | 63 { |
| 64 return new Blob(blobDataHandle); | 64 return new Blob(blobDataHandle); |
| 65 } | 65 } |
| 66 | 66 |
| 67 virtual ~Blob(); | 67 virtual ~Blob(); |
| 68 | 68 |
| 69 virtual unsigned long long size() const { return m_blobDataHandle->size(); } | 69 virtual unsigned long long size() const { return m_blobDataHandle->size(); } |
| 70 virtual Blob* slice(long long start, long long end, const String& contentTyp
e, ExceptionState&) const; | 70 virtual Blob* slice(long long start, long long end, const String& contentTyp
e, ExceptionState&) const; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 99 | 99 |
| 100 // URLRegistrable to support PublicURLs. | 100 // URLRegistrable to support PublicURLs. |
| 101 virtual URLRegistry& registry() const override final; | 101 virtual URLRegistry& registry() const override final; |
| 102 | 102 |
| 103 DEFINE_INLINE_TRACE() { } | 103 DEFINE_INLINE_TRACE() { } |
| 104 | 104 |
| 105 protected: | 105 protected: |
| 106 explicit Blob(PassRefPtr<BlobDataHandle>); | 106 explicit Blob(PassRefPtr<BlobDataHandle>); |
| 107 | 107 |
| 108 template<typename ItemType> | 108 template<typename ItemType> |
| 109 static void populateBlobData(BlobData* blobData, const Vector<ItemType>& par
ts, bool normalizeLineEndingsToNative) | 109 static void populateBlobData(BlobData* blobData, const HeapVector<ItemType>&
parts, bool normalizeLineEndingsToNative) |
| 110 { | 110 { |
| 111 for (size_t i = 0; i < parts.size(); ++i) { | 111 for (size_t i = 0; i < parts.size(); ++i) { |
| 112 const ItemType& item = parts[i]; | 112 const ItemType& item = parts[i]; |
| 113 if (item.isArrayBuffer()) { | 113 if (item.isArrayBuffer()) { |
| 114 RefPtr<DOMArrayBuffer> arrayBuffer = item.getAsArrayBuffer(); | 114 RefPtr<DOMArrayBuffer> arrayBuffer = item.getAsArrayBuffer(); |
| 115 blobData->appendBytes(arrayBuffer->data(), arrayBuffer->byteLeng
th()); | 115 blobData->appendBytes(arrayBuffer->data(), arrayBuffer->byteLeng
th()); |
| 116 } else if (item.isArrayBufferView()) { | 116 } else if (item.isArrayBufferView()) { |
| 117 RefPtr<DOMArrayBufferView> arrayBufferView = item.getAsArrayBuff
erView(); | 117 RefPtr<DOMArrayBufferView> arrayBufferView = item.getAsArrayBuff
erView(); |
| 118 blobData->appendBytes(arrayBufferView->baseAddress(), arrayBuffe
rView->byteLength()); | 118 blobData->appendBytes(arrayBufferView->baseAddress(), arrayBuffe
rView->byteLength()); |
| 119 } else if (item.isBlob()) { | 119 } else if (item.isBlob()) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 130 private: | 130 private: |
| 131 Blob(); | 131 Blob(); |
| 132 | 132 |
| 133 RefPtr<BlobDataHandle> m_blobDataHandle; | 133 RefPtr<BlobDataHandle> m_blobDataHandle; |
| 134 bool m_hasBeenClosed; | 134 bool m_hasBeenClosed; |
| 135 }; | 135 }; |
| 136 | 136 |
| 137 } // namespace blink | 137 } // namespace blink |
| 138 | 138 |
| 139 #endif // Blob_h | 139 #endif // Blob_h |
| OLD | NEW |