Index: chrome/browser/browser_shutdown_browsertest.cc |
diff --git a/chrome/browser/browser_shutdown_browsertest.cc b/chrome/browser/browser_shutdown_browsertest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..19d4302fbfe830585ae8d1c4c48c8719f8a3da24 |
--- /dev/null |
+++ b/chrome/browser/browser_shutdown_browsertest.cc |
@@ -0,0 +1,66 @@ |
+// Copyright 2017 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 "base/test/histogram_tester.h" |
+#include "chrome/app/chrome_command_ids.h" |
+#include "chrome/browser/browser_shutdown.h" |
+#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/browser_commands.h" |
+#include "chrome/browser/ui/browser_list.h" |
+#include "chrome/test/base/in_process_browser_test.h" |
+#include "chrome/test/base/ui_test_utils.h" |
+#include "content/public/browser/notification_service.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+using testing::_; |
+using testing::AtLeast; |
+ |
+class BrowserShutdownBrowserTest : public InProcessBrowserTest { |
+ public: |
+ BrowserShutdownBrowserTest() {} |
+ ~BrowserShutdownBrowserTest() override {} |
+ |
+ protected: |
+ base::HistogramTester histogram_tester_; |
+}; |
sky
2017/03/31 14:23:41
private: DISALLOW_..
Alexey Seren
2017/04/02 12:02:35
Acknowledged.
|
+ |
+class BrowserClosingObserver : public chrome::BrowserListObserver { |
+ public: |
+ MOCK_METHOD1(OnBrowserWindowClosing, void(Browser* browser)); |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(BrowserShutdownBrowserTest, |
+ PRE_TwoBrowsersShutdownHistograms) { |
+ ui_test_utils::NavigateToURL(browser(), GURL("browser://version")); |
+ Browser* browser2 = CreateBrowser(browser()->profile()); |
+ ui_test_utils::NavigateToURL(browser2, GURL("browser://help")); |
+ |
+ BrowserClosingObserver closing_observer; |
+ BrowserList::AddObserver(&closing_observer); |
+ EXPECT_CALL(closing_observer, OnBrowserWindowClosing(_)).Times(AtLeast(1)); |
+ |
+ content::WindowedNotificationObserver terminate_observer( |
+ chrome::NOTIFICATION_APP_TERMINATING, |
+ content::NotificationService::AllSources()); |
+ chrome::ExecuteCommand(browser(), IDC_EXIT); |
+ terminate_observer.Wait(); |
+ |
+ EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
+ EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
+ EXPECT_EQ(browser_shutdown::GetShutdownType(), |
+ browser_shutdown::WINDOW_CLOSE); |
+ BrowserList::RemoveObserver(&closing_observer); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(BrowserShutdownBrowserTest, |
+ TwoBrowsersShutdownHistograms) { |
+ histogram_tester_.ExpectUniqueSample("Shutdown.ShutdownType", |
+ browser_shutdown::WINDOW_CLOSE, 1); |
+ histogram_tester_.ExpectTotalCount("Shutdown.renderers.total", 1); |
+ histogram_tester_.ExpectTotalCount("Shutdown.window_close.time2", 1); |
+ histogram_tester_.ExpectTotalCount("Shutdown.window_close.time_per_process", |
+ 1); |
+} |