158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/extensions/devtools_util.h"
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/devtools/devtools_window.h"
81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "extensions/browser/extension_host.h"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_system.h"
111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "extensions/browser/lazy_background_task_queue.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/browser/process_manager.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h"
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace extensions {
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace devtools_util {
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace {
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Helper to inspect an ExtensionHost after it has been loaded.
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void InspectExtensionHost(ExtensionHost* host) {
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  if (host)
236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    DevToolsWindow::OpenDevToolsWindow(host->host_contents());
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void InspectBackgroundPage(const Extension* extension, Profile* profile) {
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DCHECK(extension);
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ExtensionSystem* system = ExtensionSystem::Get(profile);
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ExtensionHost* host =
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      system->process_manager()->GetBackgroundHostForExtension(extension->id());
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  if (host) {
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    InspectExtensionHost(host);
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  } else {
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    system->lazy_background_task_queue()->AddPendingTask(
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        profile,
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        extension->id(),
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        base::Bind(&InspectExtensionHost));
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace devtools_util
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace extensions
45