| // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "chrome/browser/ui/views/confirm_bubble_views.h" | 
 |  | 
 | #include <utility> | 
 |  | 
 | #include "chrome/browser/ui/confirm_bubble.h" | 
 | #include "chrome/browser/ui/test/test_confirm_bubble_model.h" | 
 | #include "chrome/browser/ui/views/chrome_constrained_window_views_client.h" | 
 | #include "chrome/test/views/chrome_views_test_base.h" | 
 | #include "components/constrained_window/constrained_window_views.h" | 
 | #include "testing/gtest/include/gtest/gtest.h" | 
 | #include "ui/views/widget/widget.h" | 
 |  | 
 | using views::Widget; | 
 |  | 
 | typedef ChromeViewsTestBase ConfirmBubbleViewsTest; | 
 |  | 
 | TEST_F(ConfirmBubbleViewsTest, CreateAndClose) { | 
 |   SetConstrainedWindowViewsClient(CreateChromeConstrainedWindowViewsClient()); | 
 |  | 
 |   // Create parent widget, as confirm bubble must have an owner. | 
 |   Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); | 
 |   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 
 |   std::unique_ptr<views::Widget> parent_widget(new Widget); | 
 |   parent_widget->Init(params); | 
 |   parent_widget->Show(); | 
 |  | 
 |   // Bubble owns the model. | 
 |   bool model_deleted = false; | 
 |   std::unique_ptr<TestConfirmBubbleModel> model( | 
 |       new TestConfirmBubbleModel(&model_deleted, NULL, NULL, NULL)); | 
 |   ConfirmBubbleViews* bubble = new ConfirmBubbleViews(std::move(model)); | 
 |   gfx::NativeWindow parent = parent_widget->GetNativeWindow(); | 
 |   constrained_window::CreateBrowserModalDialogViews(bubble, parent)->Show(); | 
 |  | 
 |   // Clean up. | 
 |   bubble->GetWidget()->CloseNow(); | 
 |   parent_widget->CloseNow(); | 
 |   EXPECT_TRUE(model_deleted); | 
 |  | 
 |   constrained_window::SetConstrainedWindowViewsClient(nullptr); | 
 | } |