diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp
index d201ac7..2cf8f3c 100644
--- a/android_webview/android_webview.gyp
+++ b/android_webview/android_webview.gyp
@@ -118,6 +118,8 @@
         'browser/aw_contents_io_thread_client.h',
         'browser/aw_cookie_access_policy.cc',
         'browser/aw_cookie_access_policy.h',
+        'browser/aw_devtools_delegate.cc',
+        'browser/aw_devtools_delegate.h',
         'browser/aw_download_manager_delegate.cc',
         'browser/aw_download_manager_delegate.h',
         'browser/aw_form_database_service.cc',
diff --git a/android_webview/browser/aw_browser_main_parts.cc b/android_webview/browser/aw_browser_main_parts.cc
index f19def9..b54e65b 100644
--- a/android_webview/browser/aw_browser_main_parts.cc
+++ b/android_webview/browser/aw_browser_main_parts.cc
@@ -5,6 +5,7 @@
 #include "android_webview/browser/aw_browser_main_parts.h"
 
 #include "android_webview/browser/aw_browser_context.h"
+#include "android_webview/browser/aw_devtools_delegate.h"
 #include "android_webview/browser/aw_result_codes.h"
 #include "base/android/build_info.h"
 #include "base/files/file_path.h"
@@ -60,6 +61,7 @@
 
 void AwBrowserMainParts::PreMainMessageLoopRun() {
   browser_context_->PreMainMessageLoopRun();
+  devtools_delegate_ = new AwDevToolsDelegate(browser_context_);
 }
 
 bool AwBrowserMainParts::MainMessageLoopRun(int* result_code) {
@@ -68,4 +70,9 @@
   return true;
 }
 
+void AwBrowserMainParts::PostMainMessageLoopRun() {
+  if (devtools_delegate_)
+    devtools_delegate_->Stop();
+}
+
 }  // namespace android_webview
diff --git a/android_webview/browser/aw_browser_main_parts.h b/android_webview/browser/aw_browser_main_parts.h
index 8beec92..903e19b 100644
--- a/android_webview/browser/aw_browser_main_parts.h
+++ b/android_webview/browser/aw_browser_main_parts.h
@@ -16,6 +16,7 @@
 namespace android_webview {
 
 class AwBrowserContext;
+class AwDevToolsDelegate;
 
 class AwBrowserMainParts : public content::BrowserMainParts {
  public:
@@ -27,12 +28,14 @@
   virtual int PreCreateThreads() OVERRIDE;
   virtual void PreMainMessageLoopRun() OVERRIDE;
   virtual bool MainMessageLoopRun(int* result_code) OVERRIDE;
+  virtual void PostMainMessageLoopRun() OVERRIDE;
 
  private:
   // Android specific UI MessageLoop.
   scoped_ptr<base::MessageLoop> main_message_loop_;
 
   AwBrowserContext* browser_context_;  // weak
+  AwDevToolsDelegate* devtools_delegate_;
 
   DISALLOW_COPY_AND_ASSIGN(AwBrowserMainParts);
 };
diff --git a/android_webview/browser/aw_devtools_delegate.cc b/android_webview/browser/aw_devtools_delegate.cc
new file mode 100644
index 0000000..25f2b7a
--- /dev/null
+++ b/android_webview/browser/aw_devtools_delegate.cc
@@ -0,0 +1,248 @@
+// Copyright 2013 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 "android_webview/browser/aw_devtools_delegate.h"
+
+#include "android_webview/browser/in_process_view_renderer.h"
+#include "base/bind.h"
+#include "base/json/json_writer.h"
+#include "base/strings/stringprintf.h"
+#include "base/values.h"
+#include "content/public/browser/android/devtools_auth.h"
+#include "content/public/browser/devtools_http_handler.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/common/url_constants.h"
+#include "net/socket/unix_domain_socket_posix.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "webkit/common/user_agent/user_agent_util.h"
+
+namespace {
+const char kFrontEndURL[] =
+    "http://chrome-devtools-frontend.appspot.com/serve_rev/%s/devtools.html";
+const char kSocketNameFormat[] = "webview_devtools_remote_%d";
+}
+
+namespace android_webview {
+
+AwDevToolsDelegate::AwDevToolsDelegate(content::BrowserContext* browser_context)
+    : browser_context_(browser_context) {
+  devtools_http_handler_ = content::DevToolsHttpHandler::Start(
+      new net::UnixDomainSocketWithAbstractNamespaceFactory(
+          base::StringPrintf(kSocketNameFormat, getpid()),
+          "",
+          base::Bind(&content::CanUserConnectToDevTools)),
+      base::StringPrintf(kFrontEndURL,
+                         webkit_glue::GetWebKitRevision().c_str()),
+      this);
+}
+
+AwDevToolsDelegate::~AwDevToolsDelegate() {
+}
+
+void AwDevToolsDelegate::Stop() {
+  devtools_http_handler_->Stop();
+  // WARNING: |this| has now been deleted by the method above.
+}
+
+std::string AwDevToolsDelegate::GetDiscoveryPageHTML() {
+  // This is a temporary way of providing the list of inspectable WebViews.
+  // Since WebView doesn't have its own resources now, it doesn't seem
+  // reasonable to create a dedicated .pak file just for this temporary page.
+  const char html[] =
+      "<html>"
+      "<head>"
+      "<title>WebView remote debugging</title>"
+      "<style>"
+      "</style>"
+      "<script>"
+      "function onLoad() {"
+      "  var tabs_list_request = new XMLHttpRequest();"
+      "  tabs_list_request.open("
+      "      'GET', '/json/list?t=' + new Date().getTime(), true);"
+      "  tabs_list_request.onreadystatechange = onReady;"
+      "  tabs_list_request.send();"
+      "}"
+      "function processItem(item) {"
+      "  var result = JSON.parse(item.description);"
+      "  result.debuggable = !!item.devtoolsFrontendUrl;"
+      "  result.debugUrl = item.devtoolsFrontendUrl;"
+      "  result.title = item.title;"
+      "  return result;"
+      "}"
+      "function onReady() {"
+      "  if(this.readyState == 4 && this.status == 200) {"
+      "    if(this.response != null)"
+      "      var responseJSON = JSON.parse(this.response);"
+      "      var items = [];"
+      "      for (var i = 0; i < responseJSON.length; ++i)"
+      "        items.push(processItem(responseJSON[i]));"
+      "      clear();"
+      "      for (var i = 0; i < items.length; ++i)"
+      "        displayView(items[i]);"
+      "      filter();"
+      "  }"
+      "}"
+      "function addColumn(row, text) {"
+      "  var column = document.createElement('td');"
+      "  column.innerText = text;"
+      "  row.appendChild(column);"
+      "}"
+      "function cutTextIfNeeded(text, maxLen) {"
+      "  return text.length <= maxLen ?"
+      "      text : text.substr(0, maxLen) + '\u2026';"
+      "}"
+      "function displayView(item) {"
+      "  var row = document.createElement('tr');"
+      "  var column = document.createElement('td');"
+      "  var frontend_ref;"
+      "  if (item.debuggable) {"
+      "    frontend_ref = document.createElement('a');"
+      "    frontend_ref.href = item.debugUrl;"
+      "    frontend_ref.title = item.title;"
+      "    frontend_ref.target = '_blank';"
+      "    column.appendChild(frontend_ref);"
+      "  } else {"
+      "    frontend_ref = column;"
+      "  }"
+      "  var text = document.createElement('span');"
+      "  if (item.title) {"
+      "    text.innerText = cutTextIfNeeded(item.title, 64);"
+      "  } else {"
+      "    text.innerText = '(untitled)';"
+      "  }"
+      "  frontend_ref.appendChild(text);"
+      "  var bits = 0;"
+      "  var attached = item.attached ? (bits |= 1, 'Y') : 'N';"
+      "  var visible = item.visible ? (bits |= 2, 'Y') : 'N';"
+      "  var empty = item.empty ? 'Y' : (bits |= 4, 'N');"
+      "  row.setAttribute('class', bits);"
+      "  row.appendChild(column);"
+      "  addColumn(row, attached);"
+      "  addColumn(row, visible);"
+      "  addColumn(row, empty);"
+      "  addColumn(row, item.screenX + ', ' + item.screenY);"
+      "  addColumn(row,"
+      "            !item.empty ? (item.width + '\u00d7' + item.height) : '');"
+      "  document.getElementById('items').appendChild(row);"
+      "}"
+      "function filter() {"
+      "  var show_attached = document.getElementById('show_attached').checked;"
+      "  var show_visible = document.getElementById('show_visible').checked;"
+      "  var show_nonempty = document.getElementById('show_nonempty').checked;"
+      "  var items = document.getElementById('items').childNodes;"
+      "  for (var i = 0; i < items.length; i++) {"
+      "    if (items[i].nodeName == 'TR') {"
+      "      var mask = parseInt(items[i].getAttribute('class'));"
+      "      var show = true;"
+      "      if (show_attached) show &= ((mask & 1) != 0);"
+      "      if (show_visible) show &= ((mask & 2) != 0);"
+      "      if (show_nonempty) show &= ((mask & 4) != 0);"
+      "      if (show) {"
+      "        items[i].style.display = 'table-row';"
+      "      } else {"
+      "        items[i].style.display = 'none';"
+      "      }"
+      "    }"
+      "  }"
+      "}"
+      "var refreshInterval = 0;"
+      "function toggleRefresh() {"
+      "  clearInterval(refreshInterval);"
+      "  var enabled = document.getElementById('refresh').checked;"
+      "  if (enabled) {"
+      "    var time = document.getElementById('refresh_time').value * 1000;"
+      "    refreshInterval = setInterval(onLoad, time);"
+      "  }"
+      "}"
+      "function clear() {"
+      "  var items = document.getElementById('items');"
+      "  for (var i = 0; i < items.childNodes.length; i++) {"
+      "    items.removeChild(items.childNodes[i]);"
+      "  }"
+      "}"
+      "</script>"
+      "</head>"
+      "<body onload='onLoad()'>"
+      "  <div id='caption'>Inspectable WebViews</div>"
+      "  <div><p>Only show:</p>"
+      "    <form>"
+      "      <input type='checkbox' id='show_attached' onclick='filter()'>"
+      "      Attached<br/>"
+      "      <input type='checkbox' id='show_visible' onclick='filter()'>"
+      "      Visible<br/>"
+      "      <input type='checkbox' id='show_nonempty' onclick='filter()'>"
+      "      Non-empty<br/>"
+      "      <input type='checkbox' id='refresh' onclick='toggleRefresh()'>"
+      "      Auto refresh every "
+      "      <input type='number' id='refresh_time' value='2' min='1' max='99'"
+      "        onchange='toggleRefresh();' /> seconds<br/>"
+      "    </form>"
+      "  </div>"
+      "  <table>"
+      "    <tr><th style='width:200px; text-align:left;'>Title</th>"
+      "      <th>Attached</th><th>Visible</th><th>Empty</th>"
+      "      <th style='width:100px; text-align:left;'>Position</th>"
+      "      <th style='width:100px; text-align:left;'>Size</th>"
+      "    </tr>"
+      "    <tbody id='items'></tbody>"
+      "  </table>"
+      "</body>"
+      "</html>";
+  return html;
+}
+
+bool AwDevToolsDelegate::BundlesFrontendResources() {
+  return false;
+}
+
+base::FilePath AwDevToolsDelegate::GetDebugFrontendDir() {
+  return base::FilePath();
+}
+
+std::string AwDevToolsDelegate::GetPageThumbnailData(const GURL& url) {
+  return "";
+}
+
+content::RenderViewHost* AwDevToolsDelegate::CreateNewTarget() {
+  return NULL;
+}
+
+content::DevToolsHttpHandlerDelegate::TargetType
+AwDevToolsDelegate::GetTargetType(content::RenderViewHost*) {
+  return kTargetTypeTab;
+}
+
+std::string AwDevToolsDelegate::GetViewDescription(
+    content::RenderViewHost* rvh) {
+  content::WebContents* web_contents =
+      content::WebContents::FromRenderViewHost(rvh);
+  if (!web_contents) return "";
+
+  BrowserViewRenderer* bvr
+      = InProcessViewRenderer::FromWebContents(web_contents);
+  if (!bvr) return "";
+  base::DictionaryValue description;
+  description.SetBoolean("attached", bvr->IsAttachedToWindow());
+  description.SetBoolean("visible", bvr->IsVisible());
+  gfx::Rect screen_rect = bvr->GetScreenRect();
+  description.SetInteger("screenX", screen_rect.x());
+  description.SetInteger("screenY", screen_rect.y());
+  description.SetBoolean("empty", screen_rect.size().IsEmpty());
+  if (!screen_rect.size().IsEmpty()) {
+    description.SetInteger("width", screen_rect.width());
+    description.SetInteger("height", screen_rect.height());
+  }
+  std::string json;
+  base::JSONWriter::Write(&description, &json);
+  return json;
+}
+
+scoped_refptr<net::StreamListenSocket>
+AwDevToolsDelegate::CreateSocketForTethering(
+    net::StreamListenSocket::Delegate* delegate,
+    std::string* name) {
+  return NULL;
+}
+
+}  // namespace android_webview
diff --git a/android_webview/browser/aw_devtools_delegate.h b/android_webview/browser/aw_devtools_delegate.h
new file mode 100644
index 0000000..446e4aa
--- /dev/null
+++ b/android_webview/browser/aw_devtools_delegate.h
@@ -0,0 +1,54 @@
+// Copyright 2013 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.
+
+#ifndef ANDROID_WEBVIEW_BROWSER_AW_DEV_TOOLS_DELEGATE_H_
+#define ANDROID_WEBVIEW_BROWSER_AW_DEV_TOOLS_DELEGATE_H_
+
+#include <vector>
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "content/public/browser/devtools_http_handler_delegate.h"
+
+namespace content {
+class BrowserContext;
+class DevToolsHttpHandler;
+}
+
+namespace android_webview {
+
+class AwDevToolsDelegate : public content::DevToolsHttpHandlerDelegate {
+ public:
+  AwDevToolsDelegate(content::BrowserContext* browser_context);
+  virtual ~AwDevToolsDelegate();
+
+  // Stops http server.
+  void Stop();
+
+  // DevToolsHttpProtocolHandler::Delegate overrides.
+  virtual std::string GetDiscoveryPageHTML() OVERRIDE;
+  virtual bool BundlesFrontendResources() OVERRIDE;
+  virtual base::FilePath GetDebugFrontendDir() OVERRIDE;
+  virtual std::string GetPageThumbnailData(const GURL& url) OVERRIDE;
+  virtual content::RenderViewHost* CreateNewTarget() OVERRIDE;
+  virtual TargetType GetTargetType(content::RenderViewHost*) OVERRIDE;
+  virtual std::string GetViewDescription(content::RenderViewHost*) OVERRIDE;
+  virtual scoped_refptr<net::StreamListenSocket> CreateSocketForTethering(
+      net::StreamListenSocket::Delegate* delegate,
+      std::string* name) OVERRIDE;
+
+  content::DevToolsHttpHandler* devtools_http_handler() {
+    return devtools_http_handler_;
+  }
+
+ private:
+  content::BrowserContext* browser_context_;
+  content::DevToolsHttpHandler* devtools_http_handler_;
+
+  DISALLOW_COPY_AND_ASSIGN(AwDevToolsDelegate);
+};
+
+}  // namespace android_webview
+
+#endif  // ANDROID_WEBVIEW_BROWSER_AW_DEV_TOOLS_DELEGATE_H_
diff --git a/android_webview/java/src/org/chromium/android_webview/AwDevToolsServer.java b/android_webview/java/src/org/chromium/android_webview/AwDevToolsServer.java
deleted file mode 100644
index 852655a..0000000
--- a/android_webview/java/src/org/chromium/android_webview/AwDevToolsServer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013 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.
-
-package org.chromium.android_webview;
-
-import org.chromium.base.JNINamespace;
-
-/**
- * Controller for Remote Web Debugging (Developer Tools).
- */
-@JNINamespace("android_webview")
-public class AwDevToolsServer {
-
-    private int mNativeDevToolsServer = 0;
-
-    public AwDevToolsServer() {
-        mNativeDevToolsServer = nativeInitRemoteDebugging();
-    }
-
-    public void destroy() {
-        nativeDestroyRemoteDebugging(mNativeDevToolsServer);
-        mNativeDevToolsServer = 0;
-    }
-
-    public void setRemoteDebuggingEnabled(boolean enabled) {
-        nativeSetRemoteDebuggingEnabled(mNativeDevToolsServer, enabled);
-    }
-
-    private native int nativeInitRemoteDebugging();
-    private native void nativeDestroyRemoteDebugging(int devToolsServer);
-    private native void nativeSetRemoteDebuggingEnabled(int devToolsServer, boolean enabled);
-}
diff --git a/android_webview/native/android_webview_jni_registrar.cc b/android_webview/native/android_webview_jni_registrar.cc
index bf29f18..62f25e8 100644
--- a/android_webview/native/android_webview_jni_registrar.cc
+++ b/android_webview/native/android_webview_jni_registrar.cc
@@ -9,7 +9,6 @@
 #include "android_webview/native/aw_contents.h"
 #include "android_webview/native/aw_contents_client_bridge.h"
 #include "android_webview/native/aw_contents_io_thread_client_impl.h"
-#include "android_webview/native/aw_dev_tools_server.h"
 // START: Printing fork b/10190508
 #include "android_webview/native/aw_pdf_exporter.h"
 // END: Printing fork b/10190508
@@ -37,7 +36,6 @@
   { "AwContents", RegisterAwContents },
   { "AwContentsClientBridge", RegisterAwContentsClientBridge },
   { "AwContentsIoThreadClientImpl", RegisterAwContentsIoThreadClientImpl },
-  { "AwDevToolsServer", RegisterAwDevToolsServer },
   { "AwFormDatabase", RegisterAwFormDatabase },
   { "AwPicture", RegisterAwPicture },
   { "AwSettings", RegisterAwSettings },
diff --git a/android_webview/native/aw_dev_tools_server.cc b/android_webview/native/aw_dev_tools_server.cc
deleted file mode 100644
index b6c4fba..0000000
--- a/android_webview/native/aw_dev_tools_server.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2013 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 "android_webview/native/aw_dev_tools_server.h"
-
-#include "android_webview/browser/in_process_view_renderer.h"
-#include "base/bind.h"
-#include "base/json/json_writer.h"
-#include "base/strings/stringprintf.h"
-#include "base/values.h"
-#include "content/public/browser/android/devtools_auth.h"
-#include "content/public/browser/devtools_http_handler.h"
-#include "content/public/browser/devtools_http_handler_delegate.h"
-#include "content/public/browser/web_contents.h"
-#include "jni/AwDevToolsServer_jni.h"
-#include "net/socket/unix_domain_socket_posix.h"
-#include "webkit/common/user_agent/user_agent_util.h"
-
-namespace {
-
-const char kFrontEndURL[] =
-    "http://chrome-devtools-frontend.appspot.com/serve_rev/%s/devtools.html";
-const char kSocketNameFormat[] = "webview_devtools_remote_%d";
-
-// Delegate implementation for the devtools http handler for WebView. A new
-// instance of this gets created each time web debugging is enabled.
-class AwDevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate {
- public:
-  AwDevToolsServerDelegate() {}
-  virtual ~AwDevToolsServerDelegate() {}
-
-  // DevToolsHttpProtocolHandler::Delegate overrides.
-  virtual std::string GetDiscoveryPageHTML() OVERRIDE;
-
-  virtual bool BundlesFrontendResources() OVERRIDE {
-    return false;
-  }
-
-  virtual base::FilePath GetDebugFrontendDir() OVERRIDE {
-    return base::FilePath();
-  }
-
-  virtual std::string GetPageThumbnailData(const GURL&) OVERRIDE {
-    return "";
-  }
-
-  virtual content::RenderViewHost* CreateNewTarget() OVERRIDE {
-    return NULL;
-  }
-
-  virtual TargetType GetTargetType(content::RenderViewHost*) OVERRIDE {
-    return kTargetTypeTab;
-  }
-
-  virtual std::string GetViewDescription(content::RenderViewHost*) OVERRIDE;
-
-  virtual scoped_refptr<net::StreamListenSocket> CreateSocketForTethering(
-      net::StreamListenSocket::Delegate* delegate,
-      std::string* name) OVERRIDE {
-    return NULL;
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(AwDevToolsServerDelegate);
-};
-
-
-std::string AwDevToolsServerDelegate::GetDiscoveryPageHTML() {
-  const char html[] =
-      "<html>"
-      "<head><title>WebView remote debugging</title></head>"
-      "<body>Please use <a href=\'chrome://inspect\'>chrome://inspect</a>"
-      "</body>"
-      "</html>";
-  return html;
-}
-
-std::string AwDevToolsServerDelegate::GetViewDescription(
-    content::RenderViewHost* rvh) {
-  content::WebContents* web_contents =
-      content::WebContents::FromRenderViewHost(rvh);
-  if (!web_contents) return "";
-
-  android_webview::BrowserViewRenderer* bvr
-      = android_webview::InProcessViewRenderer::FromWebContents(web_contents);
-  if (!bvr) return "";
-  base::DictionaryValue description;
-  description.SetBoolean("attached", bvr->IsAttachedToWindow());
-  description.SetBoolean("visible", bvr->IsVisible());
-  gfx::Rect screen_rect = bvr->GetScreenRect();
-  description.SetInteger("screenX", screen_rect.x());
-  description.SetInteger("screenY", screen_rect.y());
-  description.SetBoolean("empty", screen_rect.size().IsEmpty());
-  if (!screen_rect.size().IsEmpty()) {
-    description.SetInteger("width", screen_rect.width());
-    description.SetInteger("height", screen_rect.height());
-  }
-  std::string json;
-  base::JSONWriter::Write(&description, &json);
-  return json;
-}
-
-}  // namespace
-
-namespace android_webview {
-
-AwDevToolsServer::AwDevToolsServer()
-    : protocol_handler_(NULL) {
-}
-
-AwDevToolsServer::~AwDevToolsServer() {
-  Stop();
-}
-
-void AwDevToolsServer::Start() {
-  if (protocol_handler_)
-    return;
-
-  protocol_handler_ = content::DevToolsHttpHandler::Start(
-      new net::UnixDomainSocketWithAbstractNamespaceFactory(
-          base::StringPrintf(kSocketNameFormat, getpid()),
-          "",
-          base::Bind(&content::CanUserConnectToDevTools)),
-      base::StringPrintf(kFrontEndURL,
-                         webkit_glue::GetWebKitRevision().c_str()),
-      new AwDevToolsServerDelegate());
-}
-
-void AwDevToolsServer::Stop() {
-  if (!protocol_handler_)
-    return;
-  // Note that the call to Stop() below takes care of |protocol_handler_|
-  // deletion.
-  protocol_handler_->Stop();
-  protocol_handler_ = NULL;
-}
-
-bool AwDevToolsServer::IsStarted() const {
-  return protocol_handler_;
-}
-
-bool RegisterAwDevToolsServer(JNIEnv* env) {
-  return RegisterNativesImpl(env);
-}
-
-static jint InitRemoteDebugging(JNIEnv* env,
-                                jobject obj) {
-  AwDevToolsServer* server = new AwDevToolsServer();
-  return reinterpret_cast<jint>(server);
-}
-
-static void DestroyRemoteDebugging(JNIEnv* env, jobject obj, jint server) {
-  delete reinterpret_cast<AwDevToolsServer*>(server);
-}
-
-static void SetRemoteDebuggingEnabled(JNIEnv* env,
-                                      jobject obj,
-                                      jint server,
-                                      jboolean enabled) {
-  AwDevToolsServer* devtools_server =
-      reinterpret_cast<AwDevToolsServer*>(server);
-  if (enabled) {
-    devtools_server->Start();
-  } else {
-    devtools_server->Stop();
-  }
-}
-
-}  // namespace android_webview
diff --git a/android_webview/native/aw_dev_tools_server.h b/android_webview/native/aw_dev_tools_server.h
deleted file mode 100644
index 1a46ad8..0000000
--- a/android_webview/native/aw_dev_tools_server.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2013 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.
-
-#ifndef ANDROID_WEBVIEW_NATIVE_AW_DEV_TOOLS_SERVER_H_
-#define ANDROID_WEBVIEW_NATIVE_AW_DEV_TOOLS_SERVER_H_
-
-#include <jni.h>
-#include <vector>
-
-#include "base/basictypes.h"
-
-namespace content {
-class DevToolsHttpHandler;
-}
-
-namespace android_webview {
-
-// This class controls WebView-specific Developer Tools remote debugging server.
-class AwDevToolsServer {
- public:
-  AwDevToolsServer();
-  ~AwDevToolsServer();
-
-  // Opens linux abstract socket to be ready for remote debugging.
-  void Start();
-
-  // Closes debugging socket, stops debugging.
-  void Stop();
-
-  bool IsStarted() const;
-
- private:
-  content::DevToolsHttpHandler* protocol_handler_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwDevToolsServer);
-};
-
-bool RegisterAwDevToolsServer(JNIEnv* env);
-
-}  // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_NATIVE_AW_DEV_TOOLS_SERVER_H_
diff --git a/android_webview/native/webview_native.gyp b/android_webview/native/webview_native.gyp
index 04144ef..b89c3de 100644
--- a/android_webview/native/webview_native.gyp
+++ b/android_webview/native/webview_native.gyp
@@ -44,8 +44,6 @@
         'aw_contents_client_bridge.h',
         'aw_contents_io_thread_client_impl.cc',
         'aw_contents_io_thread_client_impl.h',
-        'aw_dev_tools_server.cc',
-        'aw_dev_tools_server.h',
         'aw_form_database.cc',
         'aw_form_database.h',
         'aw_geolocation_permission_context.cc',
@@ -111,7 +109,6 @@
           '../java/src/org/chromium/android_webview/AwContentsClientBridge.java',
           '../java/src/org/chromium/android_webview/AwContentsIoThreadClient.java',
           '../java/src/org/chromium/android_webview/AwCookieManager.java',
-          '../java/src/org/chromium/android_webview/AwDevToolsServer.java',
           '../java/src/org/chromium/android_webview/AwFormDatabase.java',
           '../java/src/org/chromium/android_webview/AwHttpAuthHandler.java',
           '../java/src/org/chromium/android_webview/AwPicture.java',
