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

Side by Side Diff: ui/app_list/views/app_list_view_unittest.cc

Issue 334293005: Fix use-after-free when switching profiles in the experimental app list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add test Created 6 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "ui/app_list/views/app_list_view.h" 5 #include "ui/app_list/views/app_list_view.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/app_list/app_list_switches.h" 11 #include "ui/app_list/app_list_switches.h"
12 #include "ui/app_list/pagination_model.h" 12 #include "ui/app_list/pagination_model.h"
13 #include "ui/app_list/test/app_list_test_model.h" 13 #include "ui/app_list/test/app_list_test_model.h"
14 #include "ui/app_list/test/app_list_test_view_delegate.h" 14 #include "ui/app_list/test/app_list_test_view_delegate.h"
15 #include "ui/app_list/views/app_list_folder_view.h" 15 #include "ui/app_list/views/app_list_folder_view.h"
16 #include "ui/app_list/views/app_list_main_view.h" 16 #include "ui/app_list/views/app_list_main_view.h"
17 #include "ui/app_list/views/apps_container_view.h" 17 #include "ui/app_list/views/apps_container_view.h"
18 #include "ui/app_list/views/apps_grid_view.h" 18 #include "ui/app_list/views/apps_grid_view.h"
19 #include "ui/app_list/views/contents_switcher_view.h"
19 #include "ui/app_list/views/contents_view.h" 20 #include "ui/app_list/views/contents_view.h"
20 #include "ui/app_list/views/search_box_view.h" 21 #include "ui/app_list/views/search_box_view.h"
21 #include "ui/app_list/views/search_result_list_view.h" 22 #include "ui/app_list/views/search_result_list_view.h"
22 #include "ui/app_list/views/start_page_view.h" 23 #include "ui/app_list/views/start_page_view.h"
23 #include "ui/app_list/views/test/apps_grid_view_test_api.h" 24 #include "ui/app_list/views/test/apps_grid_view_test_api.h"
24 #include "ui/app_list/views/tile_item_view.h" 25 #include "ui/app_list/views/tile_item_view.h"
25 #include "ui/aura/test/aura_test_base.h" 26 #include "ui/aura/test/aura_test_base.h"
26 #include "ui/aura/window.h" 27 #include "ui/aura/window.h"
27 #include "ui/views/test/views_test_base.h" 28 #include "ui/views/test/views_test_base.h"
28 #include "ui/views/views_delegate.h" 29 #include "ui/views/views_delegate.h"
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 scoped_ptr<AppListTestModel> original_test_model( 333 scoped_ptr<AppListTestModel> original_test_model(
333 delegate_->ReleaseTestModel()); 334 delegate_->ReleaseTestModel());
334 delegate_->set_next_profile_app_count(1); 335 delegate_->set_next_profile_app_count(1);
335 336
336 // The original ContentsView is destroyed here. 337 // The original ContentsView is destroyed here.
337 view_->SetProfileByPath(base::FilePath()); 338 view_->SetProfileByPath(base::FilePath());
338 EXPECT_EQ(1, GetPaginationModel()->total_pages()); 339 EXPECT_EQ(1, GetPaginationModel()->total_pages());
339 340
340 StartPageView* start_page_view = 341 StartPageView* start_page_view =
341 view_->app_list_main_view()->contents_view()->start_page_view(); 342 view_->app_list_main_view()->contents_view()->start_page_view();
343 ContentsSwitcherView* contents_switcher_view =
344 view_->app_list_main_view()->contents_switcher_view();
342 if (test_type_ == EXPERIMENTAL) { 345 if (test_type_ == EXPERIMENTAL) {
346 EXPECT_NO_FATAL_FAILURE(CheckView(contents_switcher_view));
347 EXPECT_EQ(view_->app_list_main_view()->contents_view(),
348 contents_switcher_view->contents_view());
343 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view)); 349 EXPECT_NO_FATAL_FAILURE(CheckView(start_page_view));
344 EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views())); 350 EXPECT_EQ(1u, GetVisibleTileItemViews(start_page_view->tile_views()));
345 } else { 351 } else {
352 EXPECT_EQ(NULL, contents_switcher_view);
346 EXPECT_EQ(NULL, start_page_view); 353 EXPECT_EQ(NULL, start_page_view);
347 } 354 }
348 355
349 // New model updates should be processed by the start page view. 356 // New model updates should be processed by the start page view.
350 delegate_->GetTestModel()->CreateAndAddItem("Test App"); 357 delegate_->GetTestModel()->CreateAndAddItem("Test App");
351 if (test_type_ == EXPERIMENTAL) 358 if (test_type_ == EXPERIMENTAL)
352 EXPECT_EQ(2u, GetVisibleTileItemViews(start_page_view->tile_views())); 359 EXPECT_EQ(2u, GetVisibleTileItemViews(start_page_view->tile_views()));
353 360
354 // Old model updates should be ignored. 361 // Old model updates should be ignored.
355 original_test_model->CreateAndAddItem("Test App 2"); 362 original_test_model->CreateAndAddItem("Test App 2");
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance, 550 INSTANTIATE_TEST_CASE_P(AppListViewTestAuraInstance,
544 AppListViewTestAura, 551 AppListViewTestAura,
545 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); 552 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
546 553
547 INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance, 554 INSTANTIATE_TEST_CASE_P(AppListViewTestDesktopInstance,
548 AppListViewTestDesktop, 555 AppListViewTestDesktop,
549 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END)); 556 ::testing::Range<int>(TEST_TYPE_START, TEST_TYPE_END));
550 557
551 } // namespace test 558 } // namespace test
552 } // namespace app_list 559 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698