| Index: chrome/browser/chromeos/memory/oom_priority_manager_browsertest.cc
|
| diff --git a/chrome/browser/chromeos/memory/oom_priority_manager_browsertest.cc b/chrome/browser/chromeos/memory/oom_priority_manager_browsertest.cc
|
| deleted file mode 100644
|
| index d5458ee9839e1de1bec24eb0276ed2985fad982d..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/memory/oom_priority_manager_browsertest.cc
|
| +++ /dev/null
|
| @@ -1,211 +0,0 @@
|
| -// Copyright (c) 2012 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/command_line.h"
|
| -#include "base/memory/memory_pressure_listener.h"
|
| -#include "chrome/browser/browser_process.h"
|
| -#include "chrome/browser/browser_process_platform_part_chromeos.h"
|
| -#include "chrome/browser/chromeos/memory/oom_priority_manager.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_commands.h"
|
| -#include "chrome/browser/ui/find_bar/find_bar_controller.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "chrome/test/base/in_process_browser_test.h"
|
| -#include "chromeos/chromeos_switches.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/browser/notification_types.h"
|
| -#include "content/public/test/test_utils.h"
|
| -#include "url/gurl.h"
|
| -
|
| -using content::OpenURLParams;
|
| -
|
| -namespace {
|
| -
|
| -typedef InProcessBrowserTest OomPriorityManagerTest;
|
| -
|
| -IN_PROC_BROWSER_TEST_F(OomPriorityManagerTest, OomPriorityManagerBasics) {
|
| - using content::WindowedNotificationObserver;
|
| -
|
| - chromeos::OomPriorityManager* oom_priority_manager =
|
| - g_browser_process->platform_part()->oom_priority_manager();
|
| - EXPECT_FALSE(oom_priority_manager->recent_tab_discard());
|
| -
|
| - // Get three tabs open.
|
| - WindowedNotificationObserver load1(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - OpenURLParams open1(GURL(chrome::kChromeUIAboutURL), content::Referrer(),
|
| - CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false);
|
| - browser()->OpenURL(open1);
|
| - load1.Wait();
|
| -
|
| - WindowedNotificationObserver load2(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - OpenURLParams open2(GURL(chrome::kChromeUICreditsURL), content::Referrer(),
|
| - NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_TYPED,
|
| - false);
|
| - browser()->OpenURL(open2);
|
| - load2.Wait();
|
| -
|
| - WindowedNotificationObserver load3(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - OpenURLParams open3(GURL(chrome::kChromeUITermsURL), content::Referrer(),
|
| - NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_TYPED,
|
| - false);
|
| - browser()->OpenURL(open3);
|
| - load3.Wait();
|
| -
|
| - EXPECT_EQ(3, browser()->tab_strip_model()->count());
|
| -
|
| - // Navigate the current (third) tab to a different URL, so we can test
|
| - // back/forward later.
|
| - WindowedNotificationObserver load4(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - OpenURLParams open4(GURL(chrome::kChromeUIVersionURL), content::Referrer(),
|
| - CURRENT_TAB, ui::PAGE_TRANSITION_TYPED,
|
| - false);
|
| - browser()->OpenURL(open4);
|
| - load4.Wait();
|
| -
|
| - // Navigate the third tab again, such that we have three navigation entries.
|
| - WindowedNotificationObserver load5(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - OpenURLParams open5(GURL("chrome://dns"), content::Referrer(),
|
| - CURRENT_TAB, ui::PAGE_TRANSITION_TYPED,
|
| - false);
|
| - browser()->OpenURL(open5);
|
| - load5.Wait();
|
| -
|
| - EXPECT_EQ(3, browser()->tab_strip_model()->count());
|
| -
|
| - // Discard a tab. It should kill the first tab, since it was the oldest
|
| - // and was not selected.
|
| - EXPECT_TRUE(oom_priority_manager->DiscardTab());
|
| - EXPECT_EQ(3, browser()->tab_strip_model()->count());
|
| - EXPECT_TRUE(browser()->tab_strip_model()->IsTabDiscarded(0));
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(1));
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(2));
|
| - EXPECT_TRUE(oom_priority_manager->recent_tab_discard());
|
| -
|
| - // Run discard again, make sure it kills the second tab.
|
| - EXPECT_TRUE(oom_priority_manager->DiscardTab());
|
| - EXPECT_EQ(3, browser()->tab_strip_model()->count());
|
| - EXPECT_TRUE(browser()->tab_strip_model()->IsTabDiscarded(0));
|
| - EXPECT_TRUE(browser()->tab_strip_model()->IsTabDiscarded(1));
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(2));
|
| -
|
| - // Kill the third tab. It should not kill the last tab, since it is active
|
| - // tab.
|
| - EXPECT_FALSE(oom_priority_manager->DiscardTab());
|
| - EXPECT_TRUE(browser()->tab_strip_model()->IsTabDiscarded(0));
|
| - EXPECT_TRUE(browser()->tab_strip_model()->IsTabDiscarded(1));
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(2));
|
| -
|
| - // Kill the third tab after making second tab active.
|
| - browser()->tab_strip_model()->ActivateTabAt(1, true);
|
| - EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(1));
|
| - browser()->tab_strip_model()->DiscardWebContentsAt(2);
|
| - EXPECT_TRUE(browser()->tab_strip_model()->IsTabDiscarded(2));
|
| -
|
| - // Force creation of the FindBarController.
|
| - browser()->GetFindBarController();
|
| -
|
| - // Select the first tab. It should reload.
|
| - WindowedNotificationObserver reload1(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - chrome::SelectNumberedTab(browser(), 0);
|
| - reload1.Wait();
|
| - // Make sure the FindBarController gets the right WebContents.
|
| - EXPECT_EQ(browser()->GetFindBarController()->web_contents(),
|
| - browser()->tab_strip_model()->GetActiveWebContents());
|
| - EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(0));
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(1));
|
| - EXPECT_TRUE(browser()->tab_strip_model()->IsTabDiscarded(2));
|
| -
|
| - // Select the third tab. It should reload.
|
| - WindowedNotificationObserver reload2(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - chrome::SelectNumberedTab(browser(), 2);
|
| - reload2.Wait();
|
| - EXPECT_EQ(2, browser()->tab_strip_model()->active_index());
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(0));
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(1));
|
| - EXPECT_FALSE(browser()->tab_strip_model()->IsTabDiscarded(2));
|
| -
|
| - // Navigate the third tab back twice. We used to crash here due to
|
| - // crbug.com/121373.
|
| - EXPECT_TRUE(chrome::CanGoBack(browser()));
|
| - EXPECT_FALSE(chrome::CanGoForward(browser()));
|
| - WindowedNotificationObserver back1(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - chrome::GoBack(browser(), CURRENT_TAB);
|
| - back1.Wait();
|
| - EXPECT_TRUE(chrome::CanGoBack(browser()));
|
| - EXPECT_TRUE(chrome::CanGoForward(browser()));
|
| - WindowedNotificationObserver back2(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - chrome::GoBack(browser(), CURRENT_TAB);
|
| - back2.Wait();
|
| - EXPECT_FALSE(chrome::CanGoBack(browser()));
|
| - EXPECT_TRUE(chrome::CanGoForward(browser()));
|
| -}
|
| -
|
| -// Test that the MemoryPressureListener event is properly triggering a tab
|
| -// discard upon |MEMORY_PRESSURE_LEVEL_CRITICAL| event.
|
| -IN_PROC_BROWSER_TEST_F(OomPriorityManagerTest, OomPressureListener) {
|
| - chromeos::OomPriorityManager* oom_priority_manager =
|
| - g_browser_process->platform_part()->oom_priority_manager();
|
| - // Get three tabs open.
|
| - content::WindowedNotificationObserver load1(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - OpenURLParams open1(GURL(chrome::kChromeUIAboutURL), content::Referrer(),
|
| - CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false);
|
| - browser()->OpenURL(open1);
|
| - load1.Wait();
|
| -
|
| - content::WindowedNotificationObserver load2(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::NotificationService::AllSources());
|
| - OpenURLParams open2(GURL(chrome::kChromeUICreditsURL), content::Referrer(),
|
| - NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_TYPED,
|
| - false);
|
| - browser()->OpenURL(open2);
|
| - load2.Wait();
|
| - EXPECT_FALSE(oom_priority_manager->recent_tab_discard());
|
| -
|
| - // Nothing should happen with a moderate memory pressure event.
|
| - base::MemoryPressureListener::NotifyMemoryPressure(
|
| - base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE);
|
| - EXPECT_FALSE(oom_priority_manager->recent_tab_discard());
|
| -
|
| - // A critical memory pressure event should discard a tab.
|
| - base::MemoryPressureListener::NotifyMemoryPressure(
|
| - base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
|
| - // Coming here, an asynchronous operation will collect system stats. Once in,
|
| - // a tab should get discarded. As such we need to give it 10s time to discard.
|
| - const int kTimeoutTimeInMS = 10000;
|
| - const int kIntervalTimeInMS = 5;
|
| - int timeout = kTimeoutTimeInMS / kIntervalTimeInMS;
|
| - while (--timeout) {
|
| - usleep(kIntervalTimeInMS * 1000);
|
| - base::RunLoop().RunUntilIdle();
|
| - if (oom_priority_manager->recent_tab_discard())
|
| - break;
|
| - }
|
| - EXPECT_TRUE(oom_priority_manager->recent_tab_discard());
|
| -}
|
| -
|
| -} // namespace
|
|
|