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

Side by Side Diff: chrome/renderer/content_settings_observer_browsertest.cc

Issue 2812113004: Write last_modified date to Content Settings in the PrefProvider (Closed)
Patch Set: Fix Android compilation 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "chrome/common/render_messages.h" 7 #include "chrome/common/render_messages.h"
8 #include "chrome/renderer/content_settings_observer.h" 8 #include "chrome/renderer/content_settings_observer.h"
9 #include "chrome/test/base/chrome_render_view_test.h" 9 #include "chrome/test/base/chrome_render_view_test.h"
10 #include "components/content_settings/core/common/content_settings.h" 10 #include "components/content_settings/core/common/content_settings.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 LoadHTML(kHtml); 100 LoadHTML(kHtml);
101 101
102 // 2. Block JavaScript. 102 // 2. Block JavaScript.
103 RendererContentSettingRules content_setting_rules; 103 RendererContentSettingRules content_setting_rules;
104 ContentSettingsForOneType& script_setting_rules = 104 ContentSettingsForOneType& script_setting_rules =
105 content_setting_rules.script_rules; 105 content_setting_rules.script_rules;
106 script_setting_rules.push_back( 106 script_setting_rules.push_back(
107 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 107 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
108 ContentSettingsPattern::Wildcard(), 108 ContentSettingsPattern::Wildcard(),
109 CONTENT_SETTING_BLOCK, 109 CONTENT_SETTING_BLOCK,
110 base::Time(),
110 std::string(), 111 std::string(),
111 false)); 112 false));
112 ContentSettingsObserver* observer = ContentSettingsObserver::Get( 113 ContentSettingsObserver* observer = ContentSettingsObserver::Get(
113 view_->GetMainRenderFrame()); 114 view_->GetMainRenderFrame());
114 observer->SetContentSettingRules(&content_setting_rules); 115 observer->SetContentSettingRules(&content_setting_rules);
115 116
116 // Make sure no pending messages are in the queue. 117 // Make sure no pending messages are in the queue.
117 ProcessPendingMessages(); 118 ProcessPendingMessages();
118 render_thread_->sink().ClearMessages(); 119 render_thread_->sink().ClearMessages();
119 120
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 LoadHTML("<html>Foo</html>"); 180 LoadHTML("<html>Foo</html>");
180 181
181 // Set the default image blocking setting. 182 // Set the default image blocking setting.
182 RendererContentSettingRules content_setting_rules; 183 RendererContentSettingRules content_setting_rules;
183 ContentSettingsForOneType& image_setting_rules = 184 ContentSettingsForOneType& image_setting_rules =
184 content_setting_rules.image_rules; 185 content_setting_rules.image_rules;
185 image_setting_rules.push_back( 186 image_setting_rules.push_back(
186 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 187 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
187 ContentSettingsPattern::Wildcard(), 188 ContentSettingsPattern::Wildcard(),
188 CONTENT_SETTING_BLOCK, 189 CONTENT_SETTING_BLOCK,
190 base::Time(),
189 std::string(), 191 std::string(),
190 false)); 192 false));
191 193
192 ContentSettingsObserver* observer = ContentSettingsObserver::Get( 194 ContentSettingsObserver* observer = ContentSettingsObserver::Get(
193 view_->GetMainRenderFrame()); 195 view_->GetMainRenderFrame());
194 observer->SetContentSettingRules(&content_setting_rules); 196 observer->SetContentSettingRules(&content_setting_rules);
195 EXPECT_CALL(mock_observer, 197 EXPECT_CALL(mock_observer,
196 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, base::string16())); 198 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, base::string16()));
197 EXPECT_FALSE(observer->AllowImage(true, mock_observer.image_url_)); 199 EXPECT_FALSE(observer->AllowImage(true, mock_observer.image_url_));
198 ::testing::Mock::VerifyAndClearExpectations(&observer); 200 ::testing::Mock::VerifyAndClearExpectations(&observer);
199 201
200 // Create an exception which allows the image. 202 // Create an exception which allows the image.
201 image_setting_rules.insert( 203 image_setting_rules.insert(
202 image_setting_rules.begin(), 204 image_setting_rules.begin(),
203 ContentSettingPatternSource( 205 ContentSettingPatternSource(
204 ContentSettingsPattern::Wildcard(), 206 ContentSettingsPattern::Wildcard(),
205 ContentSettingsPattern::FromString(mock_observer.image_origin_), 207 ContentSettingsPattern::FromString(mock_observer.image_origin_),
206 CONTENT_SETTING_ALLOW, 208 CONTENT_SETTING_ALLOW,
209 base::Time(),
207 std::string(), 210 std::string(),
208 false)); 211 false));
209 212
210 EXPECT_CALL(mock_observer, OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, 213 EXPECT_CALL(mock_observer, OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES,
211 base::string16())).Times(0); 214 base::string16())).Times(0);
212 EXPECT_TRUE(observer->AllowImage(true, mock_observer.image_url_)); 215 EXPECT_TRUE(observer->AllowImage(true, mock_observer.image_url_));
213 ::testing::Mock::VerifyAndClearExpectations(&observer); 216 ::testing::Mock::VerifyAndClearExpectations(&observer);
214 } 217 }
215 218
216 TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) { 219 TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) {
217 MockContentSettingsObserver mock_observer(view_->GetMainRenderFrame()); 220 MockContentSettingsObserver mock_observer(view_->GetMainRenderFrame());
218 221
219 // Load some HTML. 222 // Load some HTML.
220 LoadHTML("<html>Foo</html>"); 223 LoadHTML("<html>Foo</html>");
221 224
222 // Set the default image blocking setting. 225 // Set the default image blocking setting.
223 RendererContentSettingRules content_setting_rules; 226 RendererContentSettingRules content_setting_rules;
224 ContentSettingsForOneType& image_setting_rules = 227 ContentSettingsForOneType& image_setting_rules =
225 content_setting_rules.image_rules; 228 content_setting_rules.image_rules;
226 image_setting_rules.push_back( 229 image_setting_rules.push_back(
227 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 230 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
228 ContentSettingsPattern::Wildcard(), 231 ContentSettingsPattern::Wildcard(),
229 CONTENT_SETTING_ALLOW, 232 CONTENT_SETTING_ALLOW,
233 base::Time(),
230 std::string(), 234 std::string(),
231 false)); 235 false));
232 236
233 ContentSettingsObserver* observer = 237 ContentSettingsObserver* observer =
234 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 238 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
235 observer->SetContentSettingRules(&content_setting_rules); 239 observer->SetContentSettingRules(&content_setting_rules);
236 EXPECT_CALL(mock_observer, OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, 240 EXPECT_CALL(mock_observer, OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES,
237 base::string16())).Times(0); 241 base::string16())).Times(0);
238 EXPECT_TRUE(observer->AllowImage(true, mock_observer.image_url_)); 242 EXPECT_TRUE(observer->AllowImage(true, mock_observer.image_url_));
239 ::testing::Mock::VerifyAndClearExpectations(&observer); 243 ::testing::Mock::VerifyAndClearExpectations(&observer);
240 244
241 // Create an exception which blocks the image. 245 // Create an exception which blocks the image.
242 image_setting_rules.insert( 246 image_setting_rules.insert(
243 image_setting_rules.begin(), 247 image_setting_rules.begin(),
244 ContentSettingPatternSource( 248 ContentSettingPatternSource(
245 ContentSettingsPattern::Wildcard(), 249 ContentSettingsPattern::Wildcard(),
246 ContentSettingsPattern::FromString(mock_observer.image_origin_), 250 ContentSettingsPattern::FromString(mock_observer.image_origin_),
247 CONTENT_SETTING_BLOCK, 251 CONTENT_SETTING_BLOCK,
252 base::Time(),
248 std::string(), 253 std::string(),
249 false)); 254 false));
250 EXPECT_CALL(mock_observer, 255 EXPECT_CALL(mock_observer,
251 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, base::string16())); 256 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, base::string16()));
252 EXPECT_FALSE(observer->AllowImage(true, mock_observer.image_url_)); 257 EXPECT_FALSE(observer->AllowImage(true, mock_observer.image_url_));
253 ::testing::Mock::VerifyAndClearExpectations(&observer); 258 ::testing::Mock::VerifyAndClearExpectations(&observer);
254 } 259 }
255 260
256 TEST_F(ChromeRenderViewTest, ContentSettingsBlockScripts) { 261 TEST_F(ChromeRenderViewTest, ContentSettingsBlockScripts) {
257 // Set the content settings for scripts. 262 // Set the content settings for scripts.
258 RendererContentSettingRules content_setting_rules; 263 RendererContentSettingRules content_setting_rules;
259 ContentSettingsForOneType& script_setting_rules = 264 ContentSettingsForOneType& script_setting_rules =
260 content_setting_rules.script_rules; 265 content_setting_rules.script_rules;
261 script_setting_rules.push_back( 266 script_setting_rules.push_back(
262 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 267 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
263 ContentSettingsPattern::Wildcard(), 268 ContentSettingsPattern::Wildcard(),
264 CONTENT_SETTING_BLOCK, 269 CONTENT_SETTING_BLOCK,
270 base::Time(),
265 std::string(), 271 std::string(),
266 false)); 272 false));
267 273
268 ContentSettingsObserver* observer = 274 ContentSettingsObserver* observer =
269 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 275 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
270 observer->SetContentSettingRules(&content_setting_rules); 276 observer->SetContentSettingRules(&content_setting_rules);
271 277
272 // Load a page which contains a script. 278 // Load a page which contains a script.
273 const char kHtml[] = 279 const char kHtml[] =
274 "<html>" 280 "<html>"
(...skipping 17 matching lines...) Expand all
292 298
293 TEST_F(ChromeRenderViewTest, ContentSettingsAllowScripts) { 299 TEST_F(ChromeRenderViewTest, ContentSettingsAllowScripts) {
294 // Set the content settings for scripts. 300 // Set the content settings for scripts.
295 RendererContentSettingRules content_setting_rules; 301 RendererContentSettingRules content_setting_rules;
296 ContentSettingsForOneType& script_setting_rules = 302 ContentSettingsForOneType& script_setting_rules =
297 content_setting_rules.script_rules; 303 content_setting_rules.script_rules;
298 script_setting_rules.push_back( 304 script_setting_rules.push_back(
299 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 305 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
300 ContentSettingsPattern::Wildcard(), 306 ContentSettingsPattern::Wildcard(),
301 CONTENT_SETTING_ALLOW, 307 CONTENT_SETTING_ALLOW,
308 base::Time(),
302 std::string(), 309 std::string(),
303 false)); 310 false));
304 311
305 ContentSettingsObserver* observer = 312 ContentSettingsObserver* observer =
306 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 313 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
307 observer->SetContentSettingRules(&content_setting_rules); 314 observer->SetContentSettingRules(&content_setting_rules);
308 315
309 // Load a page which contains a script. 316 // Load a page which contains a script.
310 const char kHtml[] = 317 const char kHtml[] =
311 "<html>" 318 "<html>"
(...skipping 18 matching lines...) Expand all
330 // Regression test for crbug.com/232410: Load a page with JS blocked. Then, 337 // Regression test for crbug.com/232410: Load a page with JS blocked. Then,
331 // allow JS and reload the page. In each case, only one of noscript or script 338 // allow JS and reload the page. In each case, only one of noscript or script
332 // tags should be enabled, but never both. 339 // tags should be enabled, but never both.
333 TEST_F(ChromeRenderViewTest, ContentSettingsNoscriptTag) { 340 TEST_F(ChromeRenderViewTest, ContentSettingsNoscriptTag) {
334 // 1. Block JavaScript. 341 // 1. Block JavaScript.
335 RendererContentSettingRules content_setting_rules; 342 RendererContentSettingRules content_setting_rules;
336 ContentSettingsForOneType& script_setting_rules = 343 ContentSettingsForOneType& script_setting_rules =
337 content_setting_rules.script_rules; 344 content_setting_rules.script_rules;
338 script_setting_rules.push_back(ContentSettingPatternSource( 345 script_setting_rules.push_back(ContentSettingPatternSource(
339 ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), 346 ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(),
340 CONTENT_SETTING_BLOCK, std::string(), false)); 347 CONTENT_SETTING_BLOCK, base::Time(), std::string(), false));
341 348
342 ContentSettingsObserver* observer = 349 ContentSettingsObserver* observer =
343 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 350 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
344 observer->SetContentSettingRules(&content_setting_rules); 351 observer->SetContentSettingRules(&content_setting_rules);
345 352
346 // 2. Load a page which contains a noscript tag and a script tag. Note that 353 // 2. Load a page which contains a noscript tag and a script tag. Note that
347 // the page doesn't have a body tag. 354 // the page doesn't have a body tag.
348 const char kHtml[] = 355 const char kHtml[] =
349 "<html>" 356 "<html>"
350 "<noscript>JS_DISABLED</noscript>" 357 "<noscript>JS_DISABLED</noscript>"
(...skipping 10 matching lines...) Expand all
361 std::string::npos, 368 std::string::npos,
362 blink::WebFrameContentDumper::DumpLayoutTreeAsText( 369 blink::WebFrameContentDumper::DumpLayoutTreeAsText(
363 GetMainFrame(), blink::WebFrameContentDumper::kLayoutAsTextNormal) 370 GetMainFrame(), blink::WebFrameContentDumper::kLayoutAsTextNormal)
364 .Utf8() 371 .Utf8()
365 .find("JS_ENABLED")); 372 .find("JS_ENABLED"));
366 373
367 // 3. Allow JavaScript. 374 // 3. Allow JavaScript.
368 script_setting_rules.clear(); 375 script_setting_rules.clear();
369 script_setting_rules.push_back(ContentSettingPatternSource( 376 script_setting_rules.push_back(ContentSettingPatternSource(
370 ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), 377 ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(),
371 CONTENT_SETTING_ALLOW, std::string(), false)); 378 CONTENT_SETTING_ALLOW, base::Time(), std::string(), false));
372 observer->SetContentSettingRules(&content_setting_rules); 379 observer->SetContentSettingRules(&content_setting_rules);
373 380
374 // 4. Reload the page. 381 // 4. Reload the page.
375 std::string url_str = "data:text/html;charset=utf-8,"; 382 std::string url_str = "data:text/html;charset=utf-8,";
376 url_str.append(kHtml); 383 url_str.append(kHtml);
377 GURL url(url_str); 384 GURL url(url_str);
378 Reload(url); 385 Reload(url);
379 EXPECT_NE( 386 EXPECT_NE(
380 std::string::npos, 387 std::string::npos,
381 blink::WebFrameContentDumper::DumpLayoutTreeAsText( 388 blink::WebFrameContentDumper::DumpLayoutTreeAsText(
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 was_blocked = true; 420 was_blocked = true;
414 } 421 }
415 EXPECT_FALSE(was_blocked); 422 EXPECT_FALSE(was_blocked);
416 423
417 // Block JavaScript. 424 // Block JavaScript.
418 RendererContentSettingRules content_setting_rules; 425 RendererContentSettingRules content_setting_rules;
419 ContentSettingsForOneType& script_setting_rules = 426 ContentSettingsForOneType& script_setting_rules =
420 content_setting_rules.script_rules; 427 content_setting_rules.script_rules;
421 script_setting_rules.push_back(ContentSettingPatternSource( 428 script_setting_rules.push_back(ContentSettingPatternSource(
422 ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), 429 ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(),
423 CONTENT_SETTING_BLOCK, std::string(), false)); 430 CONTENT_SETTING_BLOCK, base::Time(), std::string(), false));
424 431
425 ContentSettingsObserver* observer = 432 ContentSettingsObserver* observer =
426 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 433 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
427 observer->SetContentSettingRules(&content_setting_rules); 434 observer->SetContentSettingRules(&content_setting_rules);
428 435
429 // The page shouldn't see the change to script blocking setting after a 436 // The page shouldn't see the change to script blocking setting after a
430 // same document navigation. 437 // same document navigation.
431 OnSameDocumentNavigation(GetMainFrame(), true, true); 438 OnSameDocumentNavigation(GetMainFrame(), true, true);
432 EXPECT_TRUE(observer->AllowScript(true)); 439 EXPECT_TRUE(observer->AllowScript(true));
433 } 440 }
434 441
435 TEST_F(ChromeRenderViewTest, ContentSettingsInterstitialPages) { 442 TEST_F(ChromeRenderViewTest, ContentSettingsInterstitialPages) {
436 MockContentSettingsObserver mock_observer(view_->GetMainRenderFrame()); 443 MockContentSettingsObserver mock_observer(view_->GetMainRenderFrame());
437 // Block scripts. 444 // Block scripts.
438 RendererContentSettingRules content_setting_rules; 445 RendererContentSettingRules content_setting_rules;
439 ContentSettingsForOneType& script_setting_rules = 446 ContentSettingsForOneType& script_setting_rules =
440 content_setting_rules.script_rules; 447 content_setting_rules.script_rules;
441 script_setting_rules.push_back( 448 script_setting_rules.push_back(
442 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 449 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
443 ContentSettingsPattern::Wildcard(), 450 ContentSettingsPattern::Wildcard(),
444 CONTENT_SETTING_BLOCK, 451 CONTENT_SETTING_BLOCK,
452 base::Time(),
445 std::string(), 453 std::string(),
446 false)); 454 false));
447 // Block images. 455 // Block images.
448 ContentSettingsForOneType& image_setting_rules = 456 ContentSettingsForOneType& image_setting_rules =
449 content_setting_rules.image_rules; 457 content_setting_rules.image_rules;
450 image_setting_rules.push_back( 458 image_setting_rules.push_back(
451 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 459 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
452 ContentSettingsPattern::Wildcard(), 460 ContentSettingsPattern::Wildcard(),
453 CONTENT_SETTING_BLOCK, 461 CONTENT_SETTING_BLOCK,
462 base::Time(),
454 std::string(), 463 std::string(),
455 false)); 464 false));
456 465
457 ContentSettingsObserver* observer = 466 ContentSettingsObserver* observer =
458 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 467 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
459 observer->SetContentSettingRules(&content_setting_rules); 468 observer->SetContentSettingRules(&content_setting_rules);
460 observer->OnSetAsInterstitial(); 469 observer->OnSetAsInterstitial();
461 470
462 // Load a page which contains a script. 471 // Load a page which contains a script.
463 const char kHtml[] = 472 const char kHtml[] =
(...skipping 29 matching lines...) Expand all
493 LoadHTML("<html>Foo</html>"); 502 LoadHTML("<html>Foo</html>");
494 503
495 // Set the default setting. 504 // Set the default setting.
496 RendererContentSettingRules content_setting_rules; 505 RendererContentSettingRules content_setting_rules;
497 ContentSettingsForOneType& autoplay_setting_rules = 506 ContentSettingsForOneType& autoplay_setting_rules =
498 content_setting_rules.autoplay_rules; 507 content_setting_rules.autoplay_rules;
499 autoplay_setting_rules.push_back( 508 autoplay_setting_rules.push_back(
500 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 509 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
501 ContentSettingsPattern::Wildcard(), 510 ContentSettingsPattern::Wildcard(),
502 CONTENT_SETTING_ALLOW, 511 CONTENT_SETTING_ALLOW,
512 base::Time(),
503 std::string(), 513 std::string(),
504 false)); 514 false));
505 515
506 ContentSettingsObserver* observer = 516 ContentSettingsObserver* observer =
507 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 517 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
508 observer->SetContentSettingRules(&content_setting_rules); 518 observer->SetContentSettingRules(&content_setting_rules);
509 519
510 EXPECT_TRUE(observer->AllowAutoplay(false)); 520 EXPECT_TRUE(observer->AllowAutoplay(false));
511 ::testing::Mock::VerifyAndClearExpectations(&observer); 521 ::testing::Mock::VerifyAndClearExpectations(&observer);
512 522
513 // Add rule to block autoplay. 523 // Add rule to block autoplay.
514 autoplay_setting_rules.insert( 524 autoplay_setting_rules.insert(
515 autoplay_setting_rules.begin(), 525 autoplay_setting_rules.begin(),
516 ContentSettingPatternSource( 526 ContentSettingPatternSource(
517 ContentSettingsPattern::Wildcard(), 527 ContentSettingsPattern::Wildcard(),
518 ContentSettingsPattern::Wildcard(), 528 ContentSettingsPattern::Wildcard(),
519 CONTENT_SETTING_BLOCK, 529 CONTENT_SETTING_BLOCK,
530 base::Time(),
520 std::string(), 531 std::string(),
521 false)); 532 false));
522 533
523 EXPECT_FALSE(observer->AllowAutoplay(true)); 534 EXPECT_FALSE(observer->AllowAutoplay(true));
524 ::testing::Mock::VerifyAndClearExpectations(&observer); 535 ::testing::Mock::VerifyAndClearExpectations(&observer);
525 } 536 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698