| Index: chrome/browser/ui/chrome_bubble_manager_unittest.cc
|
| diff --git a/chrome/browser/ui/chrome_bubble_manager_unittest.cc b/chrome/browser/ui/chrome_bubble_manager_unittest.cc
|
| index 07d8c8bf9f5a402005697862960bcef271776ac8..a2744b7ca9e0661253fc10c65a5979d8447551a1 100644
|
| --- a/chrome/browser/ui/chrome_bubble_manager_unittest.cc
|
| +++ b/chrome/browser/ui/chrome_bubble_manager_unittest.cc
|
| @@ -6,57 +6,38 @@
|
|
|
| #include "base/macros.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/browser/ui/tabs/test_tab_strip_model_delegate.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| +#include "chrome/test/base/browser_with_test_window_test.h"
|
| #include "components/bubble/bubble_controller.h"
|
| #include "components/bubble/bubble_manager_mocks.h"
|
| -#include "content/public/test/test_browser_thread_bundle.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +#include "content/public/test/test_renderer_host.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace {
|
|
|
| -class ChromeBubbleManagerTest : public testing::Test {
|
| +class ChromeBubbleManagerTest : public BrowserWithTestWindowTest {
|
| public:
|
| - ChromeBubbleManagerTest();
|
| - ~ChromeBubbleManagerTest() override;
|
| + ChromeBubbleManagerTest() {}
|
|
|
| // testing::Test:
|
| void SetUp() override;
|
| void TearDown() override;
|
|
|
| protected:
|
| - scoped_ptr<TestingProfile> profile_;
|
| - scoped_ptr<TestTabStripModelDelegate> delegate_;
|
| - scoped_ptr<TabStripModel> tabstrip_;
|
| scoped_ptr<ChromeBubbleManager> manager_;
|
|
|
| private:
|
| - // ChromeBubbleManager expects to be on the UI thread.
|
| - content::TestBrowserThreadBundle thread_bundle_;
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(ChromeBubbleManagerTest);
|
| };
|
|
|
| -ChromeBubbleManagerTest::ChromeBubbleManagerTest()
|
| - : thread_bundle_(content::TestBrowserThreadBundle::DEFAULT) {}
|
| -
|
| -ChromeBubbleManagerTest::~ChromeBubbleManagerTest() {}
|
| -
|
| void ChromeBubbleManagerTest::SetUp() {
|
| - testing::Test::SetUp();
|
| -
|
| - profile_.reset(new TestingProfile);
|
| - delegate_.reset(new TestTabStripModelDelegate);
|
| - tabstrip_.reset(new TabStripModel(delegate_.get(), profile_.get()));
|
| - manager_.reset(new ChromeBubbleManager(tabstrip_.get()));
|
| + BrowserWithTestWindowTest::SetUp();
|
| + manager_.reset(new ChromeBubbleManager(browser()->tab_strip_model()));
|
| }
|
|
|
| void ChromeBubbleManagerTest::TearDown() {
|
| manager_.reset();
|
| - tabstrip_.reset();
|
| - delegate_.reset();
|
| - profile_.reset();
|
| - testing::Test::TearDown();
|
| + BrowserWithTestWindowTest::TearDown();
|
| }
|
|
|
| TEST_F(ChromeBubbleManagerTest, CloseMockBubbleOnDestroy) {
|
| @@ -76,4 +57,53 @@ TEST_F(ChromeBubbleManagerTest, CloseMockBubbleForTwoDifferentReasons) {
|
| ASSERT_FALSE(bubble2);
|
| }
|
|
|
| +TEST_F(ChromeBubbleManagerTest, CloseMockBubbleOnNavigate) {
|
| + AddTab(browser(), GURL("https://foo/0"));
|
| +
|
| + scoped_ptr<MockBubbleDelegate> delegate(new MockBubbleDelegate);
|
| + EXPECT_CALL(*delegate, ShouldClose(BUBBLE_CLOSE_NAVIGATED))
|
| + .WillOnce(testing::Return(true));
|
| + EXPECT_CALL(*delegate, DidClose());
|
| + EXPECT_CALL(*delegate, Destroyed());
|
| +
|
| + BubbleReference bubble_ref = manager_->ShowBubble(std::move(delegate));
|
| +
|
| + NavigateAndCommitActiveTab(GURL("https://foo/1"));
|
| +
|
| + ASSERT_FALSE(bubble_ref);
|
| +}
|
| +
|
| +TEST_F(ChromeBubbleManagerTest, CloseMockBubbleOnOwningFrameDestroy) {
|
| + AddTab(browser(), GURL("https://foo/0"));
|
| +
|
| + content::RenderFrameHostTester* main_frame =
|
| + content::RenderFrameHostTester::For(
|
| + browser()->tab_strip_model()->GetWebContentsAt(0)->GetMainFrame());
|
| +
|
| + content::RenderFrameHost* subframe0 = main_frame->AppendChild("subframe0");
|
| + content::RenderFrameHostTester* subframe0_tester =
|
| + content::RenderFrameHostTester::For(subframe0);
|
| +
|
| + content::RenderFrameHost* subframe1 = main_frame->AppendChild("subframe1");
|
| + content::RenderFrameHostTester* subframe1_tester =
|
| + content::RenderFrameHostTester::For(subframe1);
|
| +
|
| + scoped_ptr<MockBubbleDelegate> delegate(new MockBubbleDelegate);
|
| + EXPECT_CALL(*delegate, OwningFrame())
|
| + .WillRepeatedly(testing::Return(subframe0));
|
| + EXPECT_CALL(*delegate, ShouldClose(BUBBLE_CLOSE_FRAME_DESTROYED))
|
| + .WillOnce(testing::Return(true));
|
| + EXPECT_CALL(*delegate, DidClose());
|
| + EXPECT_CALL(*delegate, Destroyed());
|
| +
|
| + BubbleReference bubble_ref = manager_->ShowBubble(std::move(delegate));
|
| +
|
| + subframe1_tester->Detach();
|
| + EXPECT_TRUE(bubble_ref) << "The bubble shouldn't be destroyed when a "
|
| + "non-owning frame is destroyed.";
|
| +
|
| + subframe0_tester->Detach();
|
| + EXPECT_FALSE(bubble_ref);
|
| +}
|
| +
|
| } // namespace
|
|
|