Index: chrome/browser/debugger/dev_tools_view.cc |
=================================================================== |
--- chrome/browser/debugger/dev_tools_view.cc (revision 0) |
+++ chrome/browser/debugger/dev_tools_view.cc (revision 0) |
@@ -0,0 +1,88 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/debugger/dev_tools_view.h" |
+ |
+#include "chrome/browser/browser_list.h" |
+#include "chrome/browser/profile.h" |
+#include "chrome/browser/tab_contents/web_contents.h" |
+#include "chrome/browser/views/tab_contents_container_view.h" |
+#include "chrome/common/property_bag.h" |
+#include "chrome/common/render_messages.h" |
+ |
+DevToolsView::DevToolsView(int inspected_process_id, int inspected_view_id) |
+ : inspected_process_id_(inspected_process_id), |
+ inspected_view_id_(inspected_view_id), |
+ web_contents_(NULL) { |
+ web_container_ = new TabContentsContainerView(); |
+ AddChildView(web_container_); |
+} |
+ |
+DevToolsView::~DevToolsView() { |
+} |
+ |
+void DevToolsView::SendDevToolsClientMessage(const IPC::Message& message) { |
+ if (!web_contents_) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ IPC::Message* copy = new IPC::Message(message); |
+ copy->set_routing_id(web_contents_->render_view_host()->routing_id()); |
+ web_contents_->render_view_host()->Send(copy); |
+} |
+ |
+std::string DevToolsView::GetClassName() const { |
+ return "DevToolsView"; |
+} |
+ |
+gfx::Size DevToolsView::GetPreferredSize() { |
+ return gfx::Size(700, 400); |
+} |
+ |
+void DevToolsView::Layout() { |
+ web_container_->SetBounds(0, 0, width(), height()); |
+} |
+ |
+void DevToolsView::ViewHierarchyChanged(bool is_add, |
+ views::View* parent, |
+ views::View* child) { |
+ if (is_add && child == this) { |
+ DCHECK(GetWidget()); |
+ Init(); |
+ } |
+} |
+ |
+void DevToolsView::Init() { |
+ // We can't create the WebContents until we've actually been put into a real |
+ // view hierarchy somewhere. |
+ Profile* profile = BrowserList::GetLastActive()->profile(); |
+ |
+ TabContents* tc = TabContents::CreateWithType(TAB_CONTENTS_DOM_UI, profile, |
+ NULL); |
+ web_contents_ = tc->AsWebContents(); |
+ web_contents_->SetupController(profile); |
+ web_contents_->set_delegate(this); |
+ web_container_->SetTabContents(web_contents_); |
+ web_contents_->render_view_host()->AllowDOMUIBindings(); |
+ web_contents_->render_view_host()->SetInspectedView(inspected_process_id_, |
+ inspected_view_id_); |
+ |
+ GURL contents("chrome-ui://inspector/debugger-oop.html"); |
+ // this will call CreateRenderView to create renderer process |
+ web_contents_->controller()->LoadURL(contents, GURL(), |
+ PageTransition::START_PAGE); |
+} |
+ |
+void DevToolsView::OnWindowClosing() { |
+ web_container_->SetTabContents(NULL); // detach last (and only) tab |
+ web_contents_->CloseContents(); // destroy the tab and navigation controller |
+} |
+ |
+void DevToolsView::OpenURLFromTab(TabContents* source, |
+ const GURL& url, const GURL& referrer, |
+ WindowOpenDisposition disposition, |
+ PageTransition::Type transition) { |
+ NOTREACHED(); |
+} |
+ |