Chromium Code Reviews| Index: ui/views/controls/combobox/combobox_unittest.cc |
| diff --git a/ui/views/controls/combobox/combobox_unittest.cc b/ui/views/controls/combobox/combobox_unittest.cc |
| index 3637c087b1db6a7dd602668317659201339920e1..9e9e7ccf7651984bba7bec88cde7c39327afa182 100644 |
| --- a/ui/views/controls/combobox/combobox_unittest.cc |
| +++ b/ui/views/controls/combobox/combobox_unittest.cc |
| @@ -10,6 +10,7 @@ |
| #include "ui/base/models/combobox_model.h" |
| #include "ui/events/event.h" |
| #include "ui/events/keycodes/keyboard_codes.h" |
| +#include "ui/views/controls/combobox/combobox_listener.h" |
| #include "ui/views/ime/mock_input_method.h" |
| #include "ui/views/test/views_test_base.h" |
| #include "ui/views/widget/widget.h" |
| @@ -340,4 +341,30 @@ TEST_F(ComboboxTest, SelectValue) { |
| EXPECT_EQ(1, combobox_->selected_index()); |
| } |
| +class EvilListener : public ComboboxListener { |
| + public: |
| + EvilListener() : deleted_(false) {}; |
| + virtual ~EvilListener() {}; |
| + |
| + // ComboboxListener: |
| + virtual void OnSelectedIndexChanged(Combobox* combobox) OVERRIDE { |
| + delete combobox; |
| + deleted_ = true; |
| + } |
| + |
| + bool deleted() const { return deleted_; } |
| + |
| + private: |
| + bool deleted_; |
| +}; |
|
sky
2013/12/05 04:07:30
nit: DISALLOW...
Dan Beam
2013/12/05 17:05:33
Done.
|
| + |
| +TEST_F(ComboboxTest, ListenerHandlesDelete) { |
| + TestComboboxModel model; |
| + TestCombobox* combobox = new TestCombobox(&model); // Deleted on change. |
| + EvilListener evil_listener; |
| + combobox->set_listener(&evil_listener); |
| + ASSERT_NO_FATAL_FAILURE(combobox->ExecuteCommand(2)); |
| + EXPECT_TRUE(evil_listener.deleted()); |
| +} |
| + |
| } // namespace views |