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. 4 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" 10#include "url/gurl.h" 11 12namespace content { 13 14class ServiceWorkerProcessManagerTest : public testing::Test { 15 public: 16 ServiceWorkerProcessManagerTest() {} 17 18 virtual void SetUp() OVERRIDE { 19 process_manager_.reset(new ServiceWorkerProcessManager(NULL)); 20 pattern_ = GURL("http://www.example.com/"); 21 } 22 23 virtual void TearDown() OVERRIDE { 24 process_manager_.reset(); 25 } 26 27 protected: 28 scoped_ptr<ServiceWorkerProcessManager> process_manager_; 29 GURL pattern_; 30 31 private: 32 content::TestBrowserThreadBundle thread_bundle_; 33 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerProcessManagerTest); 34}; 35 36TEST_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); 44 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)); 48 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)); 54} 55 56} // namespace content 57