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

Side by Side Diff: ui/views/controls/table/table_view_unittest.cc

Issue 1129233006: Fixes possible crash in TableView (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 | « ui/views/controls/table/table_view.cc ('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 // 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 "ui/views/controls/table/table_view.h" 5 #include "ui/views/controls/table/table_view.h"
6 6
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/events/event_utils.h" 10 #include "ui/events/event_utils.h"
(...skipping 16 matching lines...) Expand all
27 base::IntToString(region.min_column) + " " + 27 base::IntToString(region.min_column) + " " +
28 base::IntToString(region.max_column); 28 base::IntToString(region.max_column);
29 } 29 }
30 30
31 size_t visible_col_count() { 31 size_t visible_col_count() {
32 return table_->visible_columns().size(); 32 return table_->visible_columns().size();
33 } 33 }
34 34
35 TableHeader* header() { return table_->header_; } 35 TableHeader* header() { return table_->header_; }
36 36
37 void SetSelectionModel(const ui::ListSelectionModel& new_selection) {
38 table_->SetSelectionModel(new_selection);
39 }
40
41 void OnFocus() {
42 table_->OnFocus();
43 }
44
37 private: 45 private:
38 TableView* table_; 46 TableView* table_;
39 47
40 DISALLOW_COPY_AND_ASSIGN(TableViewTestHelper); 48 DISALLOW_COPY_AND_ASSIGN(TableViewTestHelper);
41 }; 49 };
42 50
43 namespace { 51 namespace {
44 52
45 // TestTableModel2 ------------------------------------------------------------- 53 // TestTableModel2 -------------------------------------------------------------
46 54
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 EXPECT_EQ("active=4 anchor=4 selection=3 4", SelectionStateAsString()); 845 EXPECT_EQ("active=4 anchor=4 selection=3 4", SelectionStateAsString());
838 846
839 // Extend selection to first row. 847 // Extend selection to first row.
840 ClickOnRow(0, ui::EF_SHIFT_DOWN); 848 ClickOnRow(0, ui::EF_SHIFT_DOWN);
841 EXPECT_EQ(1, observer.GetChangedCountAndClear()); 849 EXPECT_EQ(1, observer.GetChangedCountAndClear());
842 EXPECT_EQ("active=2 anchor=4 selection=2 3 4", SelectionStateAsString()); 850 EXPECT_EQ("active=2 anchor=4 selection=2 3 4", SelectionStateAsString());
843 851
844 table_->SetObserver(NULL); 852 table_->SetObserver(NULL);
845 } 853 }
846 854
855 // Verifies we don't crash after removing the selected row when there is
856 // sorting and the anchor/active index also match the selected row.
857 TEST_F(TableViewTest, FocusAfterRemovingAnchor) {
858 table_->ToggleSortOrder(0);
859
860 ui::ListSelectionModel new_selection;
861 new_selection.AddIndexToSelection(0);
862 new_selection.AddIndexToSelection(1);
863 new_selection.set_active(0);
864 new_selection.set_anchor(0);
865 helper_->SetSelectionModel(new_selection);
866 model_->RemoveRow(0);
867 helper_->OnFocus();
868 }
869
847 } // namespace views 870 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/table/table_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698