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
3 // found in the LICENSE file.
5 #include "chrome/browser/memory/oom_priority_manager.h"
10 #include "base/logging.h"
11 #include "base/strings/string16.h"
12 #include "base/time/time.h"
13 #include "chrome/browser/memory/oom_priority_manager_delegate_chromeos.h"
14 #include "chrome/browser/memory/tab_stats.h"
15 #include "chrome/common/url_constants.h"
16 #include "testing/gtest/include/gtest/gtest.h"
21 typedef testing::Test OomPriorityManagerDelegateTest
;
23 TEST_F(OomPriorityManagerDelegateTest
, GetProcessHandles
) {
25 std::vector
<OomPriorityManagerDelegate::ProcessInfo
> process_id_pairs
;
27 // Empty stats list gives empty |process_id_pairs| list.
28 TabStatsList empty_list
;
30 OomPriorityManagerDelegate::GetChildProcessInfos(empty_list
);
31 EXPECT_EQ(0u, process_id_pairs
.size());
33 // Two tabs in two different processes generates two
34 // |child_process_host_id| out.
35 TabStatsList two_list
;
36 stats
.child_process_host_id
= 100;
37 stats
.renderer_handle
= 101;
38 two_list
.push_back(stats
);
39 stats
.child_process_host_id
= 200;
40 stats
.renderer_handle
= 201;
41 two_list
.push_back(stats
);
42 process_id_pairs
= OomPriorityManagerDelegate::GetChildProcessInfos(two_list
);
43 EXPECT_EQ(2u, process_id_pairs
.size());
44 EXPECT_EQ(100, process_id_pairs
[0].first
);
45 EXPECT_EQ(101, process_id_pairs
[0].second
);
46 EXPECT_EQ(200, process_id_pairs
[1].first
);
47 EXPECT_EQ(201, process_id_pairs
[1].second
);
49 // Zero handles are removed.
50 TabStatsList zero_handle_list
;
51 stats
.child_process_host_id
= 100;
52 stats
.renderer_handle
= 0;
53 zero_handle_list
.push_back(stats
);
55 OomPriorityManagerDelegate::GetChildProcessInfos(zero_handle_list
);
56 EXPECT_EQ(0u, process_id_pairs
.size());
58 // Two tabs in the same process generates one handle out. When a duplicate
59 // occurs the later instance is dropped.
60 TabStatsList same_process_list
;
61 stats
.child_process_host_id
= 100;
62 stats
.renderer_handle
= 101;
63 same_process_list
.push_back(stats
);
64 stats
.child_process_host_id
= 200;
65 stats
.renderer_handle
= 201;
66 same_process_list
.push_back(stats
);
67 stats
.child_process_host_id
= 300;
68 stats
.renderer_handle
= 101; // Duplicate.
69 same_process_list
.push_back(stats
);
71 OomPriorityManagerDelegate::GetChildProcessInfos(same_process_list
);
72 EXPECT_EQ(2u, process_id_pairs
.size());
73 EXPECT_EQ(100, process_id_pairs
[0].first
);
74 EXPECT_EQ(101, process_id_pairs
[0].second
);
75 EXPECT_EQ(200, process_id_pairs
[1].first
);
76 EXPECT_EQ(201, process_id_pairs
[1].second
);