1 // Copyright 2015 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 "chrome/browser/task_manager/providers/web_contents/web_contents_tags_manager.h" 6 7 #include <algorithm> 8 9 #include "base/memory/singleton.h" 10 #include "chrome/browser/task_manager/providers/web_contents/web_contents_task_provider.h" 11 12 namespace task_manager { 13 14 // static GetInstance()15WebContentsTagsManager* WebContentsTagsManager::GetInstance() { 16 return base::Singleton<WebContentsTagsManager>::get(); 17 } 18 AddTag(WebContentsTag * tag)19void WebContentsTagsManager::AddTag(WebContentsTag* tag) { 20 DCHECK(tag); 21 tracked_tags_.push_back(tag); 22 23 if (provider_) 24 provider_->OnWebContentsTagCreated(tag); 25 } 26 RemoveTag(WebContentsTag * tag)27void WebContentsTagsManager::RemoveTag(WebContentsTag* tag) { 28 DCHECK(tag); 29 tracked_tags_.erase(std::find(tracked_tags_.begin(), 30 tracked_tags_.end(), 31 tag)); 32 33 // No need to inform the provider here. The provider will create an entry 34 // for each WebContents it's tracking which is a WebContentsObserver and 35 // can be used to track the lifetime of the WebContents. 36 37 // We must however make sure that the provider has already forgotten about the 38 // tag and its associated web_contents. 39 if (provider_) 40 CHECK(!provider_->HasWebContents(tag->web_contents())); 41 } 42 SetProvider(WebContentsTaskProvider * provider)43void WebContentsTagsManager::SetProvider(WebContentsTaskProvider* provider) { 44 DCHECK(provider); 45 DCHECK(!provider_); 46 provider_ = provider; 47 } 48 ClearProvider()49void WebContentsTagsManager::ClearProvider() { 50 DCHECK(provider_); 51 provider_ = nullptr; 52 } 53 ClearFromProvider(const WebContentsTag * tag)54void WebContentsTagsManager::ClearFromProvider(const WebContentsTag* tag) { 55 if (provider_) 56 provider_->OnWebContentsTagRemoved(tag); 57 } 58 WebContentsTagsManager()59WebContentsTagsManager::WebContentsTagsManager() 60 : provider_(nullptr) { 61 } 62 ~WebContentsTagsManager()63WebContentsTagsManager::~WebContentsTagsManager() { 64 } 65 66 } // namespace task_manager 67