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

Side by Side Diff: Source/wtf/ArrayBufferBuilder.h

Issue 206243002: Check if ArrayBuffer allocation in ArrayBufferBuilder is successful. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/fileapi/FileReaderLoader.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 20 matching lines...) Expand all
31 #ifndef ArrayBufferBuilder_h 31 #ifndef ArrayBufferBuilder_h
32 #define ArrayBufferBuilder_h 32 #define ArrayBufferBuilder_h
33 33
34 #include "wtf/ArrayBuffer.h" 34 #include "wtf/ArrayBuffer.h"
35 #include "wtf/Noncopyable.h" 35 #include "wtf/Noncopyable.h"
36 #include "wtf/RefPtr.h" 36 #include "wtf/RefPtr.h"
37 #include "wtf/text/WTFString.h" 37 #include "wtf/text/WTFString.h"
38 38
39 namespace WTF { 39 namespace WTF {
40 40
41 // A utility class to build an ArrayBuffer instance. 41 // A utility class to build an ArrayBuffer instance. Validity must be checked
42 // by isValid() before using an instance.
42 class WTF_EXPORT ArrayBufferBuilder { 43 class WTF_EXPORT ArrayBufferBuilder {
43 // Disallow copying since it's expensive and we don't want code to do it by 44 // Disallow copying since it's expensive and we don't want code to do it by
44 // accident. 45 // accident.
45 WTF_MAKE_NONCOPYABLE(ArrayBufferBuilder); 46 WTF_MAKE_NONCOPYABLE(ArrayBufferBuilder);
46 47
47 public: 48 public:
48 // Creates an ArrayBufferBuilder using the default capacity. 49 // Creates an ArrayBufferBuilder using the default capacity.
49 ArrayBufferBuilder(); 50 ArrayBufferBuilder();
50 51
51 ArrayBufferBuilder(unsigned capacity) 52 ArrayBufferBuilder(unsigned capacity)
52 : m_bytesUsed(0) 53 : m_bytesUsed(0)
53 , m_variableCapacity(true) 54 , m_variableCapacity(true)
54 { 55 {
55 m_buffer = ArrayBuffer::create(capacity, 1); 56 m_buffer = ArrayBuffer::create(capacity, 1);
56 } 57 }
57 58
59 bool isValid() const
60 {
61 return m_buffer;
62 }
63
64 // Appending empty data is not allowed.
58 unsigned append(const char* data, unsigned length); 65 unsigned append(const char* data, unsigned length);
59 66
60 // Returns the accumulated data as an ArrayBuffer instance. If needed, 67 // Returns the accumulated data as an ArrayBuffer instance. If needed,
61 // creates a new ArrayBuffer instance and copies contents from the internal 68 // creates a new ArrayBuffer instance and copies contents from the internal
62 // buffer to it. Otherwise, returns a PassRefPtr pointing to the internal 69 // buffer to it. Otherwise, returns a PassRefPtr pointing to the internal
63 // buffer. 70 // buffer.
64 PassRefPtr<ArrayBuffer> toArrayBuffer(); 71 PassRefPtr<ArrayBuffer> toArrayBuffer();
65 72
66 // Converts the accumulated data into a String using the default encoding. 73 // Converts the accumulated data into a String using the default encoding.
67 String toString(); 74 String toString();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 unsigned m_bytesUsed; 108 unsigned m_bytesUsed;
102 bool m_variableCapacity; 109 bool m_variableCapacity;
103 RefPtr<ArrayBuffer> m_buffer; 110 RefPtr<ArrayBuffer> m_buffer;
104 }; 111 };
105 112
106 } // namespace WTF 113 } // namespace WTF
107 114
108 using WTF::ArrayBufferBuilder; 115 using WTF::ArrayBufferBuilder;
109 116
110 #endif // ArrayBufferBuilder_h 117 #endif // ArrayBufferBuilder_h
OLDNEW
« no previous file with comments | « Source/core/fileapi/FileReaderLoader.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698