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

Side by Side Diff: Source/core/html/track/WebVTTParser.h

Issue 64303004: Handle buffer boundaries in the WebVTT parser (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix compilation warning Created 7 years, 1 month 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 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 17 matching lines...) Expand all
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #ifndef WebVTTParser_h 31 #ifndef WebVTTParser_h
32 #define WebVTTParser_h 32 #define WebVTTParser_h
33 33
34 #include "HTMLNames.h" 34 #include "HTMLNames.h"
35 #include "RuntimeEnabledFeatures.h" 35 #include "RuntimeEnabledFeatures.h"
36 #include "core/dom/DocumentFragment.h" 36 #include "core/dom/DocumentFragment.h"
37 #include "core/fetch/TextResourceDecoder.h" 37 #include "core/fetch/TextResourceDecoder.h"
38 #include "core/html/track/BufferedLineReader.h"
38 #include "core/html/track/TextTrackCue.h" 39 #include "core/html/track/TextTrackCue.h"
39 #include "core/html/track/VTTRegion.h" 40 #include "core/html/track/VTTRegion.h"
40 #include "core/html/track/WebVTTTokenizer.h" 41 #include "core/html/track/WebVTTTokenizer.h"
41 #include "wtf/PassOwnPtr.h" 42 #include "wtf/PassOwnPtr.h"
42 #include "wtf/text/StringBuilder.h" 43 #include "wtf/text/StringBuilder.h"
43 44
44 namespace WebCore { 45 namespace WebCore {
45 46
46 using namespace HTMLNames; 47 using namespace HTMLNames;
47 48
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 // Transfers ownership of last parsed cues to caller. 111 // Transfers ownership of last parsed cues to caller.
111 void getNewCues(Vector<RefPtr<TextTrackCue> >&); 112 void getNewCues(Vector<RefPtr<TextTrackCue> >&);
112 void getNewRegions(Vector<RefPtr<VTTRegion> >&); 113 void getNewRegions(Vector<RefPtr<VTTRegion> >&);
113 114
114 private: 115 private:
115 WebVTTParser(WebVTTParserClient*, Document&); 116 WebVTTParser(WebVTTParserClient*, Document&);
116 117
117 Document* m_document; 118 Document* m_document;
118 ParseState m_state; 119 ParseState m_state;
119 120
120 void parse(const String& textData); 121 void parse();
121 void flushPendingCue(); 122 void flushPendingCue();
122 bool hasRequiredFileIdentifier(const String& line); 123 bool hasRequiredFileIdentifier(const String& line);
123 ParseState collectCueId(const String&); 124 ParseState collectCueId(const String&);
124 ParseState collectTimingsAndSettings(const String&); 125 ParseState collectTimingsAndSettings(const String&);
125 ParseState collectCueText(const String&); 126 ParseState collectCueText(const String&);
126 ParseState ignoreBadCue(const String&); 127 ParseState ignoreBadCue(const String&);
127 128
128 void createNewCue(); 129 void createNewCue();
129 void resetCueValues(); 130 void resetCueValues();
130 131
131 void collectMetadataHeader(const String&); 132 void collectMetadataHeader(const String&);
132 void createNewRegion(); 133 void createNewRegion();
133 134
134 void skipWhiteSpace(const String&, unsigned*); 135 void skipWhiteSpace(const String&, unsigned*);
135 static void skipLineTerminator(const String& data, unsigned*);
136 static String collectNextLine(const String& data, unsigned*);
137 136
138 String m_currentHeaderName; 137 String m_currentHeaderName;
139 String m_currentHeaderValue; 138 String m_currentHeaderValue;
140 139
140 BufferedLineReader m_lineReader;
141 RefPtr<TextResourceDecoder> m_decoder; 141 RefPtr<TextResourceDecoder> m_decoder;
142 String m_currentId; 142 String m_currentId;
143 double m_currentStartTime; 143 double m_currentStartTime;
144 double m_currentEndTime; 144 double m_currentEndTime;
145 StringBuilder m_currentContent; 145 StringBuilder m_currentContent;
146 String m_currentSettings; 146 String m_currentSettings;
147 147
148 WebVTTParserClient* m_client; 148 WebVTTParserClient* m_client;
149 149
150 Vector<RefPtr<TextTrackCue> > m_cuelist; 150 Vector<RefPtr<TextTrackCue> > m_cuelist;
151 151
152 Vector<RefPtr<VTTRegion> > m_regionList; 152 Vector<RefPtr<VTTRegion> > m_regionList;
153 }; 153 };
154 154
155 } // namespace WebCore 155 } // namespace WebCore
156 156
157 #endif 157 #endif
OLDNEW
« no previous file with comments | « Source/core/html/track/BufferedLineReaderTest.cpp ('k') | Source/core/html/track/WebVTTParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698