Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Side by Side Diff: chrome/browser/memory/tab_manager_unittest.cc

Issue 2462513002: Add Resume logic of Purge+Suspend to TabManager. (Closed)
Patch Set: Fixed Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "chrome/browser/memory/tab_manager.h" 5 #include "chrome/browser/memory/tab_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 EXPECT_FALSE(tm.under_memory_pressure_); 664 EXPECT_FALSE(tm.under_memory_pressure_);
665 EXPECT_EQ(0u, task_runner->size()); 665 EXPECT_EQ(0u, task_runner->size());
666 EXPECT_EQ(0u, tm.notified_renderers_.size()); 666 EXPECT_EQ(0u, tm.notified_renderers_.size());
667 667
668 668
669 // Clean up the tabstrip. 669 // Clean up the tabstrip.
670 tabstrip.CloseAllTabs(); 670 tabstrip.CloseAllTabs();
671 ASSERT_TRUE(tabstrip.empty()); 671 ASSERT_TRUE(tabstrip.empty());
672 } 672 }
673 673
674 TEST_F(TabManagerTest, NextPurgeAndSuspendState) {
675 TabManager tab_manager;
676 TabStripDummyDelegate delegate;
677 TabStripModel tabstrip(&delegate, profile());
678 tabstrip.AddObserver(&tab_manager);
679
680 WebContents* test_contents = CreateWebContents();
681 tabstrip.AppendWebContents(test_contents, false);
682
683 base::TimeDelta threshold = base::TimeDelta::FromSeconds(180);
684 base::SimpleTestTickClock test_clock;
685
686 tab_manager.GetWebContentsData(test_contents)
687 ->SetPurgeAndSuspendState(TabManager::RUNNING);
688 tab_manager.GetWebContentsData(test_contents)
689 ->SetLastPurgeAndSuspendModifiedTimeForTesting(test_clock.NowTicks());
690
691 test_clock.Advance(base::TimeDelta::FromSeconds(180));
692 EXPECT_EQ(TabManager::RUNNING,
693 tab_manager.GetNextPurgeAndSuspendState(
694 test_contents, test_clock.NowTicks(), threshold));
695
696 test_clock.Advance(base::TimeDelta::FromSeconds(1));
697 EXPECT_EQ(TabManager::SUSPENDED,
698 tab_manager.GetNextPurgeAndSuspendState(
699 test_contents, test_clock.NowTicks(), threshold));
700
701 tab_manager.GetWebContentsData(test_contents)
702 ->SetPurgeAndSuspendState(TabManager::SUSPENDED);
703 tab_manager.GetWebContentsData(test_contents)
704 ->SetLastPurgeAndSuspendModifiedTimeForTesting(test_clock.NowTicks());
705
706 test_clock.Advance(base::TimeDelta::FromSeconds(120));
707 EXPECT_EQ(TabManager::SUSPENDED,
708 tab_manager.GetNextPurgeAndSuspendState(
709 test_contents, test_clock.NowTicks(), threshold));
710
711 test_clock.Advance(base::TimeDelta::FromSeconds(1));
712 EXPECT_EQ(TabManager::RESUMED,
713 tab_manager.GetNextPurgeAndSuspendState(
714 test_contents, test_clock.NowTicks(), threshold));
715
716 tab_manager.GetWebContentsData(test_contents)
717 ->SetPurgeAndSuspendState(TabManager::RESUMED);
718 tab_manager.GetWebContentsData(test_contents)
719 ->SetLastPurgeAndSuspendModifiedTimeForTesting(test_clock.NowTicks());
720
721 test_clock.Advance(base::TimeDelta::FromSeconds(10));
722 EXPECT_EQ(TabManager::RESUMED,
723 tab_manager.GetNextPurgeAndSuspendState(
724 test_contents, test_clock.NowTicks(), threshold));
725
726 test_clock.Advance(base::TimeDelta::FromSeconds(1));
727 EXPECT_EQ(TabManager::SUSPENDED,
728 tab_manager.GetNextPurgeAndSuspendState(
729 test_contents, test_clock.NowTicks(), threshold));
730
731 // Clean up the tabstrip.
732 tabstrip.CloseAllTabs();
733 EXPECT_TRUE(tabstrip.empty());
734 }
735
736 TEST_F(TabManagerTest, ActivateTabResetPurgeAndSuspendState) {
737 TabManager tab_manager;
738 TabStripDummyDelegate delegate;
739 TabStripModel tabstrip(&delegate, profile());
740 tabstrip.AddObserver(&tab_manager);
741
742 WebContents* tab1 = CreateWebContents();
743 WebContents* tab2 = CreateWebContents();
744 tabstrip.AppendWebContents(tab1, true);
745 tabstrip.AppendWebContents(tab2, false);
746
747 base::SimpleTestTickClock test_clock;
748
749 // Initially PurgeAndSuspend state should be RUNNING.
750 EXPECT_EQ(TabManager::RUNNING,
751 tab_manager.GetWebContentsData(tab2)->GetPurgeAndSuspendState());
752
753 tab_manager.GetWebContentsData(tab2)->SetPurgeAndSuspendState(
754 TabManager::SUSPENDED);
755 tab_manager.GetWebContentsData(tab2)
756 ->SetLastPurgeAndSuspendModifiedTimeForTesting(test_clock.NowTicks());
757
758 // Activate tab2. Tab2's PurgeAndSuspend state should be RUNNING.
759 tabstrip.ActivateTabAt(1, true /* user_gesture */);
760 EXPECT_EQ(TabManager::RUNNING,
761 tab_manager.GetWebContentsData(tab2)->GetPurgeAndSuspendState());
762
763 tab_manager.GetWebContentsData(tab1)->SetPurgeAndSuspendState(
764 TabManager::RESUMED);
765 tab_manager.GetWebContentsData(tab1)
766 ->SetLastPurgeAndSuspendModifiedTimeForTesting(test_clock.NowTicks());
767
768 // Activate tab1. Tab1's PurgeAndSuspend state should be RUNNING.
769 tabstrip.ActivateTabAt(0, true /* user_gesture */);
770 EXPECT_EQ(TabManager::RUNNING,
771 tab_manager.GetWebContentsData(tab1)->GetPurgeAndSuspendState());
772
773 // Clean up the tabstrip.
774 tabstrip.CloseAllTabs();
775 EXPECT_TRUE(tabstrip.empty());
776 }
777
674 } // namespace memory 778 } // namespace memory
OLDNEW
« no previous file with comments | « chrome/browser/memory/tab_manager.cc ('k') | chrome/browser/memory/tab_manager_web_contents_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698