OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/base_switches.h" | 5 #include "base/base_switches.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/memory/memory_pressure_listener.h" | 7 #include "base/memory/memory_pressure_listener.h" |
8 #include "base/test/simple_test_tick_clock.h" | 8 #include "base/test/simple_test_tick_clock.h" |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 // Should not be able to discard a tab. | 386 // Should not be able to discard a tab. |
387 ASSERT_FALSE(tab_manager->DiscardTabImpl()); | 387 ASSERT_FALSE(tab_manager->DiscardTabImpl()); |
388 | 388 |
389 // Remove the video stream. | 389 // Remove the video stream. |
390 video_stream_ui.reset(); | 390 video_stream_ui.reset(); |
391 | 391 |
392 // Should be able to discard the background tab now. | 392 // Should be able to discard the background tab now. |
393 EXPECT_TRUE(tab_manager->DiscardTabImpl()); | 393 EXPECT_TRUE(tab_manager->DiscardTabImpl()); |
394 } | 394 } |
395 | 395 |
| 396 IN_PROC_BROWSER_TEST_F(TabManagerTest, AutoDiscardable) { |
| 397 using content::WindowedNotificationObserver; |
| 398 TabManager* tab_manager = g_browser_process->GetTabManager(); |
| 399 |
| 400 // Disable the protection of recent tabs. |
| 401 tab_manager->minimum_protection_time_ = base::TimeDelta::FromMinutes(0); |
| 402 |
| 403 // Get two tabs open. |
| 404 WindowedNotificationObserver load1( |
| 405 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 406 content::NotificationService::AllSources()); |
| 407 OpenURLParams open1(GURL(chrome::kChromeUIAboutURL), content::Referrer(), |
| 408 CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false); |
| 409 browser()->OpenURL(open1); |
| 410 load1.Wait(); |
| 411 |
| 412 WindowedNotificationObserver load2( |
| 413 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 414 content::NotificationService::AllSources()); |
| 415 OpenURLParams open2(GURL(chrome::kChromeUICreditsURL), content::Referrer(), |
| 416 NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_TYPED, false); |
| 417 browser()->OpenURL(open2); |
| 418 load2.Wait(); |
| 419 |
| 420 // Set the auto-discardable state of the first tab to false. |
| 421 auto tsm = browser()->tab_strip_model(); |
| 422 ASSERT_EQ(2, tsm->count()); |
| 423 tab_manager->SetTabAutoDiscardableState(tsm->GetWebContentsAt(0), false); |
| 424 |
| 425 // Shouldn't discard the tab, since auto-discardable is deactivated. |
| 426 EXPECT_FALSE(tab_manager->DiscardTabImpl()); |
| 427 |
| 428 // Reset auto-discardable state to true. |
| 429 tab_manager->SetTabAutoDiscardableState(tsm->GetWebContentsAt(0), true); |
| 430 |
| 431 // Now it should be able to discard the tab. |
| 432 EXPECT_TRUE(tab_manager->DiscardTabImpl()); |
| 433 EXPECT_TRUE(tab_manager->IsTabDiscarded(tsm->GetWebContentsAt(0))); |
| 434 } |
| 435 |
396 } // namespace memory | 436 } // namespace memory |
397 | 437 |
398 #endif // OS_WIN || OS_MAXOSX || OS_LINUX | 438 #endif // OS_WIN || OS_MAXOSX || OS_LINUX |
OLD | NEW |