diff options
author | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 14:28:35 +0000 |
---|---|---|
committer | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 14:28:35 +0000 |
commit | 616d494697cd87234a27666cb4cf20dd33f96c34 (patch) | |
tree | 11166521556f7646f1103c808d599adf9379421a | |
parent | ea0b3b4b360db0c3973056338a5bad37cad23811 (diff) | |
download | chromium_src-616d494697cd87234a27666cb4cf20dd33f96c34.zip chromium_src-616d494697cd87234a27666cb4cf20dd33f96c34.tar.gz chromium_src-616d494697cd87234a27666cb4cf20dd33f96c34.tar.bz2 |
[Android] Abandon bundling DevTools frontends for mobile apps
From now, DevTools frontends are only served from the cloud using
Blink revision number. This enabled all mobile Chromium apps
(Chrome, Chromium TestShell, WebView) to be inspectable from chrome://inspect.
An exception is made for Content Shell, as it will be used for running layout
tests (including Inspector layout tests) on Android and thus it needs the
frontend to be bundled.
BUG=138925
TBR=jochen (to work around not formally having Android owners for chrome/browser/chrome_browser_main_android.*)
Review URL: https://chromiumcodereview.appspot.com/17389005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208913 0039d316-1c4b-4281-b951-d872f2087c98
14 files changed, 39 insertions, 58 deletions
diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp index 801546e..f8ed864 100644 --- a/android_webview/android_webview.gyp +++ b/android_webview/android_webview.gyp @@ -28,7 +28,6 @@ 'target_name': 'android_webview_pak', 'type': 'none', 'dependencies': [ - '<(DEPTH)/content/browser/devtools/devtools_resources.gyp:devtools_resources', '<(DEPTH)/content/content_resources.gyp:content_resources', '<(DEPTH)/net/net.gyp:net_resources', '<(DEPTH)/ui/ui.gyp:ui_resources', @@ -45,7 +44,6 @@ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak', - '<(SHARED_INTERMEDIATE_DIR)/webkit/devtools_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_chromium_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources_100_percent.pak', ], diff --git a/android_webview/browser/aw_devtools_delegate.cc b/android_webview/browser/aw_devtools_delegate.cc index 49a5ff4..0e0e026 100644 --- a/android_webview/browser/aw_devtools_delegate.cc +++ b/android_webview/browser/aw_devtools_delegate.cc @@ -15,8 +15,11 @@ #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"; } @@ -29,7 +32,8 @@ AwDevToolsDelegate::AwDevToolsDelegate(content::BrowserContext* browser_context) base::StringPrintf(kSocketNameFormat, getpid()), "", base::Bind(&content::CanUserConnectToDevTools)), - "", + base::StringPrintf(kFrontEndURL, + webkit_glue::GetWebKitRevision().c_str()), this); } @@ -189,7 +193,7 @@ std::string AwDevToolsDelegate::GetDiscoveryPageHTML() { } bool AwDevToolsDelegate::BundlesFrontendResources() { - return true; + return false; } base::FilePath AwDevToolsDelegate::GetDebugFrontendDir() { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java b/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java index f5777aa..37f943d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java @@ -11,9 +11,8 @@ public class DevToolsServer { private int mNativeDevToolsServer = 0; - public DevToolsServer(boolean useBundledFrontendResources, - String socketName) { - mNativeDevToolsServer = nativeInitRemoteDebugging(useBundledFrontendResources, socketName); + public DevToolsServer(String socketNamePrefix) { + mNativeDevToolsServer = nativeInitRemoteDebugging(socketNamePrefix); } public void destroy() { @@ -29,8 +28,7 @@ public class DevToolsServer { nativeSetRemoteDebuggingEnabled(mNativeDevToolsServer, enabled); } - private native int nativeInitRemoteDebugging(boolean useBundledFrontendResources, - String socketName); + private native int nativeInitRemoteDebugging(String socketNamePrefix); private native void nativeDestroyRemoteDebugging(int devToolsServer); private native boolean nativeIsRemoteDebuggingEnabled(int devToolsServer); private native void nativeSetRemoteDebuggingEnabled(int devToolsServer, boolean enabled); diff --git a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java index 9e87746..f67833e 100644 --- a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java +++ b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java @@ -75,7 +75,7 @@ public class ChromiumTestShellActivity extends ChromiumActivity { mWindow.restoreInstanceState(savedInstanceState); mTabManager.setWindow(mWindow); - mDevToolsServer = new DevToolsServer(true, "chromium_testshell_devtools_remote"); + mDevToolsServer = new DevToolsServer("chromium_testshell"); mDevToolsServer.setRemoteDebuggingEnabled(true); } diff --git a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java index e0b8d50..afdb3e5 100644 --- a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java +++ b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java @@ -22,7 +22,6 @@ public class ChromiumTestShellApplication extends Application { "en-US.pak", "resources.pak", "chrome_100_percent.pak", - "devtools_resources.pak", }; @Override diff --git a/chrome/browser/android/dev_tools_server.cc b/chrome/browser/android/dev_tools_server.cc index 8602490..d7f9617 100644 --- a/chrome/browser/android/dev_tools_server.cc +++ b/chrome/browser/android/dev_tools_server.cc @@ -16,11 +16,11 @@ #include "base/logging.h" #include "base/strings/stringprintf.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/devtools/devtools_adb_bridge.h" #include "chrome/browser/history/top_sites.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/android/tab_model/tab_model.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h" -#include "chrome/common/chrome_version_info.h" #include "content/public/browser/android/devtools_auth.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/devtools_http_handler.h" @@ -33,21 +33,21 @@ #include "net/socket/unix_domain_socket_posix.h" #include "net/url_request/url_request_context_getter.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/static/%s/devtools.html"; -const char kDefaultSocketName[] = "chrome_devtools_remote"; + "http://chrome-devtools-frontend.appspot.com/serve_rev/%s/devtools.html"; +const char kDefaultSocketNamePrefix[] = "chrome"; const char kTetheringSocketName[] = "chrome_devtools_tethering_%d_%d"; // Delegate implementation for the devtools http handler on android. A new // instance of this gets created each time devtools is enabled. class DevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate { public: - explicit DevToolsServerDelegate(bool use_bundled_frontend_resources) - : use_bundled_frontend_resources_(use_bundled_frontend_resources), - last_tethering_socket_(0) { + DevToolsServerDelegate() + : last_tethering_socket_(0) { } virtual std::string GetDiscoveryPageHTML() OVERRIDE { @@ -62,7 +62,7 @@ class DevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate { } virtual bool BundlesFrontendResources() OVERRIDE { - return use_bundled_frontend_resources_; + return false; } virtual base::FilePath GetDebugFrontendDir() OVERRIDE { @@ -124,7 +124,6 @@ class DevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate { top_sites->SyncWithHistory(); } - bool use_bundled_frontend_resources_; int last_tethering_socket_; DISALLOW_COPY_AND_ASSIGN(DevToolsServerDelegate); @@ -133,8 +132,8 @@ class DevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate { } // namespace DevToolsServer::DevToolsServer() - : use_bundled_frontend_resources_(false), - socket_name_(kDefaultSocketName), + : socket_name_(base::StringPrintf(kDevToolsChannelNameFormat, + kDefaultSocketNamePrefix)), protocol_handler_(NULL) { // Override the default socket name if one is specified on the command line. const CommandLine& command_line = *CommandLine::ForCurrentProcess(); @@ -144,10 +143,9 @@ DevToolsServer::DevToolsServer() } } -DevToolsServer::DevToolsServer(bool use_bundled_frontend_resources, - const std::string& socket_name) - : use_bundled_frontend_resources_(use_bundled_frontend_resources), - socket_name_(socket_name), +DevToolsServer::DevToolsServer(const std::string& socket_name_prefix) + : socket_name_(base::StringPrintf(kDevToolsChannelNameFormat, + socket_name_prefix.c_str())), protocol_handler_(NULL) { } @@ -159,17 +157,14 @@ void DevToolsServer::Start() { if (protocol_handler_) return; - chrome::VersionInfo version_info; - protocol_handler_ = content::DevToolsHttpHandler::Start( new net::UnixDomainSocketWithAbstractNamespaceFactory( socket_name_, base::StringPrintf("%s_%d", socket_name_.c_str(), getpid()), base::Bind(&content::CanUserConnectToDevTools)), - use_bundled_frontend_resources_ ? - "" : - base::StringPrintf(kFrontEndURL, version_info.Version().c_str()), - new DevToolsServerDelegate(use_bundled_frontend_resources_)); + base::StringPrintf(kFrontEndURL, + webkit_glue::GetWebKitRevision().c_str()), + new DevToolsServerDelegate()); } void DevToolsServer::Stop() { @@ -191,11 +186,9 @@ bool RegisterDevToolsServer(JNIEnv* env) { static jint InitRemoteDebugging(JNIEnv* env, jobject obj, - jboolean use_bundled_frontend_resources, - jstring socketName) { + jstring socket_name_prefix) { DevToolsServer* server = new DevToolsServer( - use_bundled_frontend_resources, - base::android::ConvertJavaStringToUTF8(env, socketName)); + base::android::ConvertJavaStringToUTF8(env, socket_name_prefix)); return reinterpret_cast<jint>(server); } diff --git a/chrome/browser/android/dev_tools_server.h b/chrome/browser/android/dev_tools_server.h index 775f0c0..72ddc89 100644 --- a/chrome/browser/android/dev_tools_server.h +++ b/chrome/browser/android/dev_tools_server.h @@ -17,8 +17,7 @@ class DevToolsHttpHandler; class DevToolsServer { public: DevToolsServer(); - DevToolsServer(bool use_bundled_frontend_resources, - const std::string& socket_name); + explicit DevToolsServer(const std::string& socket_name_prefix); ~DevToolsServer(); // Opens linux abstract socket to be ready for remote debugging. @@ -30,7 +29,6 @@ class DevToolsServer { bool IsStarted() const; private: - bool use_bundled_frontend_resources_; std::string socket_name_; content::DevToolsHttpHandler* protocol_handler_; diff --git a/chrome/browser/chrome_browser_main_android.cc b/chrome/browser/chrome_browser_main_android.cc index f08ce27..b83a09e 100644 --- a/chrome/browser/chrome_browser_main_android.cc +++ b/chrome/browser/chrome_browser_main_android.cc @@ -84,21 +84,6 @@ void ChromeBrowserMainPartsAndroid::PreEarlyInitialization() { ChromeBrowserMainParts::PreEarlyInitialization(); } -int ChromeBrowserMainPartsAndroid::PreCreateThreads() { - TRACE_EVENT0("startup", "ChromeBrowserMainPartsAndroid::PreCreateThreads") - // PreCreateThreads initializes ResourceBundle instance. - const int result = ChromeBrowserMainParts::PreCreateThreads(); - - // Add devtools_resources.pak which is used in Chromium TestShell. - base::FilePath paks_path; - PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &paks_path); - ResourceBundle::GetSharedInstance().AddOptionalDataPackFromPath( - paks_path.Append(FILE_PATH_LITERAL("devtools_resources.pak")), - ui::SCALE_FACTOR_NONE); - - return result; -} - void ChromeBrowserMainPartsAndroid::ShowMissingLocaleMessageBox() { NOTREACHED(); } diff --git a/chrome/browser/chrome_browser_main_android.h b/chrome/browser/chrome_browser_main_android.h index 1439ac2..b498db5 100644 --- a/chrome/browser/chrome_browser_main_android.h +++ b/chrome/browser/chrome_browser_main_android.h @@ -18,7 +18,6 @@ class ChromeBrowserMainPartsAndroid : public ChromeBrowserMainParts { // content::BrowserMainParts overrides. virtual void PreProfileInit() OVERRIDE; virtual void PreEarlyInitialization() OVERRIDE; - virtual int PreCreateThreads() OVERRIDE; // ChromeBrowserMainParts overrides. virtual void ShowMissingLocaleMessageBox() OVERRIDE; diff --git a/chrome/browser/devtools/devtools_adb_bridge.cc b/chrome/browser/devtools/devtools_adb_bridge.cc index fb006f1..c903b5a 100644 --- a/chrome/browser/devtools/devtools_adb_bridge.cc +++ b/chrome/browser/devtools/devtools_adb_bridge.cc @@ -38,7 +38,6 @@ using net::WebSocket; namespace { static const char kDevToolsAdbBridgeThreadName[] = "Chrome_DevToolsADBThread"; -static const char kDevToolsChannelPattern[] = "devtools_remote"; static const char kHostDevicesCommand[] = "host:devices"; static const char kDeviceModelCommand[] = "host:transport:%s|shell:getprop ro.product.model"; @@ -274,7 +273,8 @@ class AdbPagesCommand : public base::RefCounted<AdbPagesCommand> { socket_to_package_.clear(); std::vector<std::string> entries; Tokenize(response, "\n", &entries); - const std::string channel_pattern = kDevToolsChannelPattern; + const std::string channel_pattern = + base::StringPrintf(kDevToolsChannelNameFormat, ""); for (size_t i = 1; i < entries.size(); ++i) { std::vector<std::string> fields; Tokenize(entries[i], " ", &fields); @@ -309,6 +309,8 @@ class AdbPagesCommand : public base::RefCounted<AdbPagesCommand> { } // namespace +const char kDevToolsChannelNameFormat[] = "%s_devtools_remote"; + class AgentHostDelegate; typedef std::map<std::string, AgentHostDelegate*> AgentHostDelegates; diff --git a/chrome/browser/devtools/devtools_adb_bridge.h b/chrome/browser/devtools/devtools_adb_bridge.h index e2ef879..a828cb1 100644 --- a/chrome/browser/devtools/devtools_adb_bridge.h +++ b/chrome/browser/devtools/devtools_adb_bridge.h @@ -22,6 +22,9 @@ class Thread; class Profile; +// The format used for constructing DevTools server socket names. +extern const char kDevToolsChannelNameFormat[]; + class DevToolsAdbBridge { public: typedef base::Callback<void(int result, diff --git a/chrome/chrome_android.gypi b/chrome/chrome_android.gypi index 078c23b..8237fac 100644 --- a/chrome/chrome_android.gypi +++ b/chrome/chrome_android.gypi @@ -68,7 +68,6 @@ 'native_lib_target': 'libchromiumtestshell', 'additional_input_paths': [ '<@(chrome_android_pak_output_resources)', - '<(chrome_android_pak_output_folder)/devtools_resources.pak', ], }, 'includes': [ '../build/java_apk.gypi', ], @@ -155,7 +154,6 @@ 'destination': '<(chrome_android_pak_output_folder)', 'files': [ '<@(chrome_android_pak_input_resources)', - '<(SHARED_INTERMEDIATE_DIR)/webkit/devtools_resources.pak', ], } ], diff --git a/content/shell/shell_devtools_delegate.cc b/content/shell/shell_devtools_delegate.cc index 2d7b15e..d6fe39c 100644 --- a/content/shell/shell_devtools_delegate.cc +++ b/content/shell/shell_devtools_delegate.cc @@ -59,6 +59,8 @@ namespace content { ShellDevToolsDelegate::ShellDevToolsDelegate(BrowserContext* browser_context) : browser_context_(browser_context) { + // Note that Content Shell always used bundled DevTools frontend, + // even on Android, because the shell is used for running layout tests. devtools_http_handler_ = DevToolsHttpHandler::Start(CreateSocketFactory(), std::string(), this); } diff --git a/webkit/common/user_agent/user_agent_util.h b/webkit/common/user_agent/user_agent_util.h index 3fbdf54..e23b809 100644 --- a/webkit/common/user_agent/user_agent_util.h +++ b/webkit/common/user_agent/user_agent_util.h @@ -22,6 +22,8 @@ WEBKIT_USER_AGENT_EXPORT std::string GetWebKitVersion(); WEBKIT_USER_AGENT_EXPORT int GetWebKitMajorVersion(); WEBKIT_USER_AGENT_EXPORT int GetWebKitMinorVersion(); +WEBKIT_USER_AGENT_EXPORT std::string GetWebKitRevision(); + // Helper function to generate a full user agent string from a short // product name. WEBKIT_USER_AGENT_EXPORT std::string BuildUserAgentFromProduct( |