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

Side by Side Diff: Source/core/html/TimeRangesTest.cpp

Issue 1306613002: Keep auxilliary media objects on the heap always. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « Source/core/html/TimeRanges.idl ('k') | Source/core/paint/MediaControlsPainter.cpp » ('j') | 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 blink::WebTimeRanges webRanges(static_cast<size_t>(2)); 65 blink::WebTimeRanges webRanges(static_cast<size_t>(2));
66 webRanges[0].start = 0; 66 webRanges[0].start = 0;
67 webRanges[0].end = 1; 67 webRanges[0].end = 1;
68 webRanges[1].start = 2; 68 webRanges[1].start = 2;
69 webRanges[1].end = 3; 69 webRanges[1].end = 3;
70 ASSERT_RANGE("{ [0,1) [2,3) }", TimeRanges::create(webRanges)); 70 ASSERT_RANGE("{ [0,1) [2,3) }", TimeRanges::create(webRanges));
71 } 71 }
72 72
73 TEST(TimeRangesTest, AddOrder) 73 TEST(TimeRangesTest, AddOrder)
74 { 74 {
75 RefPtrWillBeRawPtr<TimeRanges> rangeA = TimeRanges::create(); 75 TimeRanges* rangeA = TimeRanges::create();
76 RefPtrWillBeRawPtr<TimeRanges> rangeB = TimeRanges::create(); 76 TimeRanges* rangeB = TimeRanges::create();
77 77
78 rangeA->add(0, 2); 78 rangeA->add(0, 2);
79 rangeA->add(3, 4); 79 rangeA->add(3, 4);
80 rangeA->add(5, 100); 80 rangeA->add(5, 100);
81 81
82 std::string expected = "{ [0,2) [3,4) [5,100) }"; 82 std::string expected = "{ [0,2) [3,4) [5,100) }";
83 ASSERT_RANGE(expected, rangeA); 83 ASSERT_RANGE(expected, rangeA);
84 84
85 // Add the values in rangeA to rangeB in reverse order. 85 // Add the values in rangeA to rangeB in reverse order.
86 for (int i = rangeA->length() - 1; i >= 0; --i) 86 for (int i = rangeA->length() - 1; i >= 0; --i)
87 rangeB->add(rangeA->start(i, IGNORE_EXCEPTION), rangeA->end(i, IGNORE_EX CEPTION)); 87 rangeB->add(rangeA->start(i, IGNORE_EXCEPTION), rangeA->end(i, IGNORE_EX CEPTION));
88 88
89 ASSERT_RANGE(expected, rangeB); 89 ASSERT_RANGE(expected, rangeB);
90 } 90 }
91 91
92 TEST(TimeRangesTest, OverlappingAdds) 92 TEST(TimeRangesTest, OverlappingAdds)
93 { 93 {
94 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(); 94 TimeRanges* ranges = TimeRanges::create();
95 95
96 ranges->add(0, 2); 96 ranges->add(0, 2);
97 ranges->add(10, 11); 97 ranges->add(10, 11);
98 ASSERT_RANGE("{ [0,2) [10,11) }", ranges); 98 ASSERT_RANGE("{ [0,2) [10,11) }", ranges);
99 99
100 ranges->add(0, 2); 100 ranges->add(0, 2);
101 ASSERT_RANGE("{ [0,2) [10,11) }", ranges); 101 ASSERT_RANGE("{ [0,2) [10,11) }", ranges);
102 102
103 ranges->add(2, 3); 103 ranges->add(2, 3);
104 ASSERT_RANGE("{ [0,3) [10,11) }", ranges); 104 ASSERT_RANGE("{ [0,3) [10,11) }", ranges);
105 105
106 ranges->add(2, 6); 106 ranges->add(2, 6);
107 ASSERT_RANGE("{ [0,6) [10,11) }", ranges); 107 ASSERT_RANGE("{ [0,6) [10,11) }", ranges);
108 108
109 ranges->add(9, 10); 109 ranges->add(9, 10);
110 ASSERT_RANGE("{ [0,6) [9,11) }", ranges); 110 ASSERT_RANGE("{ [0,6) [9,11) }", ranges);
111 111
112 ranges->add(8, 10); 112 ranges->add(8, 10);
113 ASSERT_RANGE("{ [0,6) [8,11) }", ranges); 113 ASSERT_RANGE("{ [0,6) [8,11) }", ranges);
114 114
115 ranges->add(-1, 7); 115 ranges->add(-1, 7);
116 ASSERT_RANGE("{ [-1,7) [8,11) }", ranges); 116 ASSERT_RANGE("{ [-1,7) [8,11) }", ranges);
117 117
118 ranges->add(6, 9); 118 ranges->add(6, 9);
119 ASSERT_RANGE("{ [-1,11) }", ranges); 119 ASSERT_RANGE("{ [-1,11) }", ranges);
120 } 120 }
121 121
122 TEST(TimeRangesTest, IntersectWith_Self) 122 TEST(TimeRangesTest, IntersectWith_Self)
123 { 123 {
124 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(0, 2); 124 TimeRanges* ranges = TimeRanges::create(0, 2);
125 125
126 ASSERT_RANGE("{ [0,2) }", ranges); 126 ASSERT_RANGE("{ [0,2) }", ranges);
127 127
128 ranges->intersectWith(ranges.get()); 128 ranges->intersectWith(ranges);
129 129
130 ASSERT_RANGE("{ [0,2) }", ranges); 130 ASSERT_RANGE("{ [0,2) }", ranges);
131 } 131 }
132 132
133 TEST(TimeRangesTest, IntersectWith_IdenticalRange) 133 TEST(TimeRangesTest, IntersectWith_IdenticalRange)
134 { 134 {
135 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(0, 2); 135 TimeRanges* rangesA = TimeRanges::create(0, 2);
136 RefPtrWillBeRawPtr<TimeRanges> rangesB = rangesA->copy(); 136 TimeRanges* rangesB = rangesA->copy();
137 137
138 ASSERT_RANGE("{ [0,2) }", rangesA); 138 ASSERT_RANGE("{ [0,2) }", rangesA);
139 ASSERT_RANGE("{ [0,2) }", rangesB); 139 ASSERT_RANGE("{ [0,2) }", rangesB);
140 140
141 rangesA->intersectWith(rangesB.get()); 141 rangesA->intersectWith(rangesB);
142 142
143 ASSERT_RANGE("{ [0,2) }", rangesA); 143 ASSERT_RANGE("{ [0,2) }", rangesA);
144 ASSERT_RANGE("{ [0,2) }", rangesB); 144 ASSERT_RANGE("{ [0,2) }", rangesB);
145 } 145 }
146 146
147 TEST(TimeRangesTest, IntersectWith_Empty) 147 TEST(TimeRangesTest, IntersectWith_Empty)
148 { 148 {
149 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(0, 2); 149 TimeRanges* rangesA = TimeRanges::create(0, 2);
150 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 150 TimeRanges* rangesB = TimeRanges::create();
151 151
152 ASSERT_RANGE("{ [0,2) }", rangesA); 152 ASSERT_RANGE("{ [0,2) }", rangesA);
153 ASSERT_RANGE("{ }", rangesB); 153 ASSERT_RANGE("{ }", rangesB);
154 154
155 rangesA->intersectWith(rangesB.get()); 155 rangesA->intersectWith(rangesB);
156 156
157 ASSERT_RANGE("{ }", rangesA); 157 ASSERT_RANGE("{ }", rangesA);
158 ASSERT_RANGE("{ }", rangesB); 158 ASSERT_RANGE("{ }", rangesB);
159 } 159 }
160 160
161 TEST(TimeRangesTest, IntersectWith_DisjointRanges1) 161 TEST(TimeRangesTest, IntersectWith_DisjointRanges1)
162 { 162 {
163 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); 163 TimeRanges* rangesA = TimeRanges::create();
164 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 164 TimeRanges* rangesB = TimeRanges::create();
165 165
166 rangesA->add(0, 1); 166 rangesA->add(0, 1);
167 rangesA->add(4, 5); 167 rangesA->add(4, 5);
168 168
169 rangesB->add(2, 3); 169 rangesB->add(2, 3);
170 rangesB->add(6, 7); 170 rangesB->add(6, 7);
171 171
172 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA); 172 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA);
173 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB); 173 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB);
174 174
175 rangesA->intersectWith(rangesB.get()); 175 rangesA->intersectWith(rangesB);
176 176
177 ASSERT_RANGE("{ }", rangesA); 177 ASSERT_RANGE("{ }", rangesA);
178 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB); 178 ASSERT_RANGE("{ [2,3) [6,7) }", rangesB);
179 } 179 }
180 180
181 TEST(TimeRangesTest, IntersectWith_DisjointRanges2) 181 TEST(TimeRangesTest, IntersectWith_DisjointRanges2)
182 { 182 {
183 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); 183 TimeRanges* rangesA = TimeRanges::create();
184 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 184 TimeRanges* rangesB = TimeRanges::create();
185 185
186 rangesA->add(0, 1); 186 rangesA->add(0, 1);
187 rangesA->add(4, 5); 187 rangesA->add(4, 5);
188 188
189 rangesB->add(1, 4); 189 rangesB->add(1, 4);
190 rangesB->add(5, 7); 190 rangesB->add(5, 7);
191 191
192 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA); 192 ASSERT_RANGE("{ [0,1) [4,5) }", rangesA);
193 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB); 193 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB);
194 194
195 rangesA->intersectWith(rangesB.get()); 195 rangesA->intersectWith(rangesB);
196 196
197 ASSERT_RANGE("{ }", rangesA); 197 ASSERT_RANGE("{ }", rangesA);
198 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB); 198 ASSERT_RANGE("{ [1,4) [5,7) }", rangesB);
199 } 199 }
200 200
201 TEST(TimeRangesTest, IntersectWith_CompleteOverlap1) 201 TEST(TimeRangesTest, IntersectWith_CompleteOverlap1)
202 { 202 {
203 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); 203 TimeRanges* rangesA = TimeRanges::create();
204 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 204 TimeRanges* rangesB = TimeRanges::create();
205 205
206 rangesA->add(1, 3); 206 rangesA->add(1, 3);
207 rangesA->add(4, 5); 207 rangesA->add(4, 5);
208 rangesA->add(6, 9); 208 rangesA->add(6, 9);
209 209
210 rangesB->add(0, 10); 210 rangesB->add(0, 10);
211 211
212 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); 212 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
213 ASSERT_RANGE("{ [0,10) }", rangesB); 213 ASSERT_RANGE("{ [0,10) }", rangesB);
214 214
215 rangesA->intersectWith(rangesB.get()); 215 rangesA->intersectWith(rangesB);
216 216
217 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); 217 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
218 ASSERT_RANGE("{ [0,10) }", rangesB); 218 ASSERT_RANGE("{ [0,10) }", rangesB);
219 } 219 }
220 220
221 TEST(TimeRangesTest, IntersectWith_CompleteOverlap2) 221 TEST(TimeRangesTest, IntersectWith_CompleteOverlap2)
222 { 222 {
223 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); 223 TimeRanges* rangesA = TimeRanges::create();
224 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 224 TimeRanges* rangesB = TimeRanges::create();
225 225
226 rangesA->add(1, 3); 226 rangesA->add(1, 3);
227 rangesA->add(4, 5); 227 rangesA->add(4, 5);
228 rangesA->add(6, 9); 228 rangesA->add(6, 9);
229 229
230 rangesB->add(1, 9); 230 rangesB->add(1, 9);
231 231
232 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); 232 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
233 ASSERT_RANGE("{ [1,9) }", rangesB); 233 ASSERT_RANGE("{ [1,9) }", rangesB);
234 234
235 rangesA->intersectWith(rangesB.get()); 235 rangesA->intersectWith(rangesB);
236 236
237 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA); 237 ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
238 ASSERT_RANGE("{ [1,9) }", rangesB); 238 ASSERT_RANGE("{ [1,9) }", rangesB);
239 } 239 }
240 240
241 TEST(TimeRangesTest, IntersectWith_Gaps1) 241 TEST(TimeRangesTest, IntersectWith_Gaps1)
242 { 242 {
243 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); 243 TimeRanges* rangesA = TimeRanges::create();
244 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 244 TimeRanges* rangesB = TimeRanges::create();
245 245
246 rangesA->add(0, 2); 246 rangesA->add(0, 2);
247 rangesA->add(4, 6); 247 rangesA->add(4, 6);
248 248
249 rangesB->add(1, 5); 249 rangesB->add(1, 5);
250 250
251 ASSERT_RANGE("{ [0,2) [4,6) }", rangesA); 251 ASSERT_RANGE("{ [0,2) [4,6) }", rangesA);
252 ASSERT_RANGE("{ [1,5) }", rangesB); 252 ASSERT_RANGE("{ [1,5) }", rangesB);
253 253
254 rangesA->intersectWith(rangesB.get()); 254 rangesA->intersectWith(rangesB);
255 255
256 ASSERT_RANGE("{ [1,2) [4,5) }", rangesA); 256 ASSERT_RANGE("{ [1,2) [4,5) }", rangesA);
257 ASSERT_RANGE("{ [1,5) }", rangesB); 257 ASSERT_RANGE("{ [1,5) }", rangesB);
258 } 258 }
259 259
260 TEST(TimeRangesTest, IntersectWith_Gaps2) 260 TEST(TimeRangesTest, IntersectWith_Gaps2)
261 { 261 {
262 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); 262 TimeRanges* rangesA = TimeRanges::create();
263 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 263 TimeRanges* rangesB = TimeRanges::create();
264 264
265 rangesA->add(0, 2); 265 rangesA->add(0, 2);
266 rangesA->add(4, 6); 266 rangesA->add(4, 6);
267 rangesA->add(8, 10); 267 rangesA->add(8, 10);
268 268
269 rangesB->add(1, 9); 269 rangesB->add(1, 9);
270 270
271 ASSERT_RANGE("{ [0,2) [4,6) [8,10) }", rangesA); 271 ASSERT_RANGE("{ [0,2) [4,6) [8,10) }", rangesA);
272 ASSERT_RANGE("{ [1,9) }", rangesB); 272 ASSERT_RANGE("{ [1,9) }", rangesB);
273 273
274 rangesA->intersectWith(rangesB.get()); 274 rangesA->intersectWith(rangesB);
275 275
276 ASSERT_RANGE("{ [1,2) [4,6) [8,9) }", rangesA); 276 ASSERT_RANGE("{ [1,2) [4,6) [8,9) }", rangesA);
277 ASSERT_RANGE("{ [1,9) }", rangesB); 277 ASSERT_RANGE("{ [1,9) }", rangesB);
278 } 278 }
279 279
280 TEST(TimeRangesTest, IntersectWith_Gaps3) 280 TEST(TimeRangesTest, IntersectWith_Gaps3)
281 { 281 {
282 RefPtrWillBeRawPtr<TimeRanges> rangesA = TimeRanges::create(); 282 TimeRanges* rangesA = TimeRanges::create();
283 RefPtrWillBeRawPtr<TimeRanges> rangesB = TimeRanges::create(); 283 TimeRanges* rangesB = TimeRanges::create();
284 284
285 rangesA->add(0, 2); 285 rangesA->add(0, 2);
286 rangesA->add(4, 7); 286 rangesA->add(4, 7);
287 rangesA->add(8, 10); 287 rangesA->add(8, 10);
288 288
289 rangesB->add(1, 5); 289 rangesB->add(1, 5);
290 rangesB->add(6, 9); 290 rangesB->add(6, 9);
291 291
292 ASSERT_RANGE("{ [0,2) [4,7) [8,10) }", rangesA); 292 ASSERT_RANGE("{ [0,2) [4,7) [8,10) }", rangesA);
293 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB); 293 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB);
294 294
295 rangesA->intersectWith(rangesB.get()); 295 rangesA->intersectWith(rangesB);
296 296
297 ASSERT_RANGE("{ [1,2) [4,5) [6,7) [8,9) }", rangesA); 297 ASSERT_RANGE("{ [1,2) [4,5) [6,7) [8,9) }", rangesA);
298 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB); 298 ASSERT_RANGE("{ [1,5) [6,9) }", rangesB);
299 } 299 }
300 300
301 TEST(TimeRangesTest, Nearest) 301 TEST(TimeRangesTest, Nearest)
302 { 302 {
303 RefPtrWillBeRawPtr<TimeRanges> ranges = TimeRanges::create(); 303 TimeRanges* ranges = TimeRanges::create();
304 ranges->add(0, 2); 304 ranges->add(0, 2);
305 ranges->add(5, 7); 305 ranges->add(5, 7);
306 306
307 ASSERT_EQ(0, ranges->nearest(0, 0)); 307 ASSERT_EQ(0, ranges->nearest(0, 0));
308 ASSERT_EQ(1, ranges->nearest(1, 0)); 308 ASSERT_EQ(1, ranges->nearest(1, 0));
309 ASSERT_EQ(2, ranges->nearest(2, 0)); 309 ASSERT_EQ(2, ranges->nearest(2, 0));
310 ASSERT_EQ(2, ranges->nearest(3, 0)); 310 ASSERT_EQ(2, ranges->nearest(3, 0));
311 ASSERT_EQ(5, ranges->nearest(4, 0)); 311 ASSERT_EQ(5, ranges->nearest(4, 0));
312 ASSERT_EQ(5, ranges->nearest(5, 0)); 312 ASSERT_EQ(5, ranges->nearest(5, 0));
313 ASSERT_EQ(7, ranges->nearest(8, 0)); 313 ASSERT_EQ(7, ranges->nearest(8, 0));
314 314
315 ranges->add(9, 11); 315 ranges->add(9, 11);
316 ASSERT_EQ(7, ranges->nearest(8, 6)); 316 ASSERT_EQ(7, ranges->nearest(8, 6));
317 ASSERT_EQ(7, ranges->nearest(8, 8)); 317 ASSERT_EQ(7, ranges->nearest(8, 8));
318 ASSERT_EQ(9, ranges->nearest(8, 10)); 318 ASSERT_EQ(9, ranges->nearest(8, 10));
319 } 319 }
320 320
321 } // namespace blink 321 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/html/TimeRanges.idl ('k') | Source/core/paint/MediaControlsPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698