1 // Copyright 2014 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 "base/basictypes.h"
6 #include "content/browser/service_worker/service_worker_process_manager.h"
7 #include "content/public/test/test_browser_thread_bundle.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h"
14 class ServiceWorkerProcessManagerTest
: public testing::Test
{
16 ServiceWorkerProcessManagerTest() {}
18 virtual void SetUp() OVERRIDE
{
19 process_manager_
.reset(new ServiceWorkerProcessManager(NULL
));
20 pattern_
= GURL("http://www.example.com/");
23 virtual void TearDown() OVERRIDE
{
24 process_manager_
.reset();
28 scoped_ptr
<ServiceWorkerProcessManager
> process_manager_
;
32 content::TestBrowserThreadBundle thread_bundle_
;
33 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerProcessManagerTest
);
36 TEST_F(ServiceWorkerProcessManagerTest
, SortProcess
) {
37 // Process 1 has 2 ref, 2 has 3 refs and 3 has 1 refs.
38 process_manager_
->AddProcessReferenceToPattern(pattern_
, 1);
39 process_manager_
->AddProcessReferenceToPattern(pattern_
, 1);
40 process_manager_
->AddProcessReferenceToPattern(pattern_
, 2);
41 process_manager_
->AddProcessReferenceToPattern(pattern_
, 2);
42 process_manager_
->AddProcessReferenceToPattern(pattern_
, 2);
43 process_manager_
->AddProcessReferenceToPattern(pattern_
, 3);
45 // Process 2 has the biggest # of references and it should be chosen.
46 EXPECT_THAT(process_manager_
->SortProcessesForPattern(pattern_
),
47 testing::ElementsAre(2, 1, 3));
49 process_manager_
->RemoveProcessReferenceFromPattern(pattern_
, 1);
50 process_manager_
->RemoveProcessReferenceFromPattern(pattern_
, 1);
51 // Scores for each process: 2 : 3, 3 : 1, process 1 is removed.
52 EXPECT_THAT(process_manager_
->SortProcessesForPattern(pattern_
),
53 testing::ElementsAre(2, 3));
56 } // namespace content