1392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom// Use of this source code is governed by a BSD-style license that can be 3392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom// found in the LICENSE file. 4392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 5392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "content/browser/devtools/devtools_manager.h" 6392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 7392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "base/bind.h" 8392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "base/message_loop/message_loop.h" 9392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "content/browser/devtools/devtools_netlog_observer.h" 10392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "content/public/browser/browser_thread.h" 11392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "content/public/browser/content_browser_client.h" 12392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "content/public/browser/devtools_manager_delegate.h" 13392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 14392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromnamespace content { 15392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 16392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom// static 17392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromDevToolsManager* DevToolsManager::GetInstance() { 18392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return Singleton<DevToolsManager>::get(); 19392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 20392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 21392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromDevToolsManager::DevToolsManager() 22392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom : delegate_(GetContentClient()->browser()->GetDevToolsManagerDelegate()), 23392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom client_count_(0) { 24392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 25392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 26392aa7cc7d2b122614c5393c3e357da07fd07af3Brian CarlstromDevToolsManager::~DevToolsManager() { 27392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom DCHECK(!client_count_); 28392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 29392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 30392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromvoid DevToolsManager::OnClientAttached() { 31392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (!client_count_) { 32392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom BrowserThread::PostTask( 33392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom BrowserThread::IO, 34392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom FROM_HERE, 35392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom base::Bind(&DevToolsNetLogObserver::Attach)); 36392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 37392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom client_count_++; 38392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 39392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 40392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromvoid DevToolsManager::OnClientDetached() { 41392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom client_count_--; 42392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (!client_count_) { 43392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom BrowserThread::PostTask( 44392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom BrowserThread::IO, 45392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom FROM_HERE, 46392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom base::Bind(&DevToolsNetLogObserver::Detach)); 47392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 48392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} 49392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 50392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom} // namespace content 51392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom