1 // Copyright 2019 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.
4 
5 #include "content/public/test/no_renderer_crashes_assertion.h"
6 #include "content/public/common/child_process_host.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8 
9 namespace content {
10 
TEST(NoRendererCrashesAssertionSuspensions,SingleProcess)11 TEST(NoRendererCrashesAssertionSuspensions, SingleProcess) {
12   NoRendererCrashesAssertion::Suspensions suspensions;
13   EXPECT_FALSE(suspensions.IsSuspended(123));
14   EXPECT_FALSE(suspensions.IsSuspended(456));
15 
16   suspensions.AddSuspension(123);
17   EXPECT_TRUE(suspensions.IsSuspended(123));
18   EXPECT_FALSE(suspensions.IsSuspended(456));
19 
20   suspensions.RemoveSuspension(123);
21   EXPECT_FALSE(suspensions.IsSuspended(123));
22   EXPECT_FALSE(suspensions.IsSuspended(456));
23 }
24 
TEST(NoRendererCrashesAssertionSuspensions,AllProcesses)25 TEST(NoRendererCrashesAssertionSuspensions, AllProcesses) {
26   NoRendererCrashesAssertion::Suspensions suspensions;
27   EXPECT_FALSE(suspensions.IsSuspended(123));
28   EXPECT_FALSE(suspensions.IsSuspended(456));
29 
30   suspensions.AddSuspension(ChildProcessHost::kInvalidUniqueID);
31   EXPECT_TRUE(suspensions.IsSuspended(123));
32   EXPECT_TRUE(suspensions.IsSuspended(456));
33 
34   suspensions.RemoveSuspension(ChildProcessHost::kInvalidUniqueID);
35   EXPECT_FALSE(suspensions.IsSuspended(123));
36   EXPECT_FALSE(suspensions.IsSuspended(456));
37 }
38 
TEST(NoRendererCrashesAssertionSuspensions,SingleProcessNesting)39 TEST(NoRendererCrashesAssertionSuspensions, SingleProcessNesting) {
40   NoRendererCrashesAssertion::Suspensions suspensions;
41   EXPECT_FALSE(suspensions.IsSuspended(123));
42   EXPECT_FALSE(suspensions.IsSuspended(456));
43 
44   suspensions.AddSuspension(123);
45   EXPECT_TRUE(suspensions.IsSuspended(123));
46   EXPECT_FALSE(suspensions.IsSuspended(456));
47 
48   suspensions.AddSuspension(123);
49   EXPECT_TRUE(suspensions.IsSuspended(123));
50   EXPECT_FALSE(suspensions.IsSuspended(456));
51 
52   suspensions.RemoveSuspension(123);
53   EXPECT_TRUE(suspensions.IsSuspended(123));
54   EXPECT_FALSE(suspensions.IsSuspended(456));
55 
56   suspensions.RemoveSuspension(123);
57   EXPECT_FALSE(suspensions.IsSuspended(123));
58   EXPECT_FALSE(suspensions.IsSuspended(456));
59 }
60 
TEST(NoRendererCrashesAssertionSuspensions,AllProcessesNesting)61 TEST(NoRendererCrashesAssertionSuspensions, AllProcessesNesting) {
62   NoRendererCrashesAssertion::Suspensions suspensions;
63   EXPECT_FALSE(suspensions.IsSuspended(123));
64   EXPECT_FALSE(suspensions.IsSuspended(456));
65 
66   suspensions.AddSuspension(ChildProcessHost::kInvalidUniqueID);
67   EXPECT_TRUE(suspensions.IsSuspended(123));
68   EXPECT_TRUE(suspensions.IsSuspended(456));
69 
70   suspensions.AddSuspension(ChildProcessHost::kInvalidUniqueID);
71   EXPECT_TRUE(suspensions.IsSuspended(123));
72   EXPECT_TRUE(suspensions.IsSuspended(456));
73 
74   suspensions.RemoveSuspension(ChildProcessHost::kInvalidUniqueID);
75   EXPECT_TRUE(suspensions.IsSuspended(123));
76   EXPECT_TRUE(suspensions.IsSuspended(456));
77 
78   suspensions.RemoveSuspension(ChildProcessHost::kInvalidUniqueID);
79   EXPECT_FALSE(suspensions.IsSuspended(123));
80   EXPECT_FALSE(suspensions.IsSuspended(456));
81 }
82 
83 }  // namespace content
84