From 299750243f4728d8de6a44dfac874ac61762515d Mon Sep 17 00:00:00 2001 From: "pfeldman@chromium.org" Date: Wed, 4 Apr 2012 15:23:50 +0000 Subject: DevTools: make Save As dialog optional for the paths that have already been saved. Review URL: https://chromiumcodereview.appspot.com/9974001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@130630 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/debugger/devtools_window.cc | 55 +++++++++++++++--------------- 1 file changed, 27 insertions(+), 28 deletions(-) (limited to 'chrome/browser/debugger/devtools_window.cc') diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc index 1a8418a..5756285 100644 --- a/chrome/browser/debugger/devtools_window.cc +++ b/chrome/browser/debugger/devtools_window.cc @@ -12,7 +12,6 @@ #include "base/utf_string_conversions.h" #include "base/values.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/debugger/devtools_file_util.h" #include "chrome/browser/debugger/devtools_window.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/prefs/pref_service.h" @@ -76,6 +75,8 @@ void DevToolsWindow::RegisterUserPrefs(PrefService* prefs) { prefs->RegisterStringPref(prefs::kDevToolsDockSide, kDockSideBottom, PrefService::UNSYNCABLE_PREF); + prefs->RegisterDictionaryPref(prefs::kDevToolsEditedFiles, + PrefService::UNSYNCABLE_PREF); } // static @@ -193,11 +194,12 @@ DevToolsWindow::DevToolsWindow(TabContentsWrapper* tab_contents, browser_(NULL), docked_(docked), is_loaded_(false), - action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE), - frontend_host_(NULL) { + action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE) { frontend_host_ = DevToolsClientHost::CreateDevToolsFrontendHost( tab_contents->web_contents(), this); + file_helper_.reset(new DevToolsFileHelper(profile, this)); + g_instances.Get().push_back(this); // Wipe out page icon so that the default application icon is used. NavigationEntry* entry = @@ -417,11 +419,8 @@ bool DevToolsWindow::IsInspectedBrowserPopupOrPanel() { } void DevToolsWindow::UpdateFrontendAttachedState() { - tab_contents_->web_contents()->GetRenderViewHost()-> - ExecuteJavascriptInWebFrame( - string16(), - docked_ ? ASCIIToUTF16("WebInspector.setAttachedWindow(true);") - : ASCIIToUTF16("WebInspector.setAttachedWindow(false);")); + base::FundamentalValue docked(docked_); + CallClientFunction("WebInspector.setAttachedWindow", &docked); } @@ -429,7 +428,7 @@ void DevToolsWindow::AddDevToolsExtensionsToClient() { if (inspected_tab_) { base::FundamentalValue tabId( inspected_tab_->restore_tab_helper()->session_id().id()); - CallClientFunction(ASCIIToUTF16("WebInspector.setInspectedTabId"), tabId); + CallClientFunction("WebInspector.setInspectedTabId", &tabId); } ListValue results; const ExtensionService* extension_service = @@ -453,7 +452,7 @@ void DevToolsWindow::AddDevToolsExtensionsToClient() { new base::FundamentalValue(allow_experimental)); results.Append(extension_info); } - CallClientFunction(ASCIIToUTF16("WebInspector.addExtensions"), results); + CallClientFunction("WebInspector.addExtensions", &results); } WebContents* DevToolsWindow::OpenURLFromTab(WebContents* source, @@ -467,12 +466,14 @@ WebContents* DevToolsWindow::OpenURLFromTab(WebContents* source, return NULL; } -void DevToolsWindow::CallClientFunction(const string16& function_name, - const Value& arg) { +void DevToolsWindow::CallClientFunction(const std::string& function_name, + const Value* arg) { std::string json; - base::JSONWriter::Write(&arg, &json); - string16 javascript = function_name + char16('(') + UTF8ToUTF16(json) + - ASCIIToUTF16(");"); + if (arg) + base::JSONWriter::Write(arg, &json); + + string16 javascript = + ASCIIToUTF16(function_name + "(" + json + ");"); tab_contents_->web_contents()->GetRenderViewHost()-> ExecuteJavascriptInWebFrame(string16(), javascript); } @@ -511,16 +512,10 @@ void DevToolsWindow::DoAction() { // TODO: these messages should be pushed through the WebKit API instead. switch (action_on_load_) { case DEVTOOLS_TOGGLE_ACTION_SHOW_CONSOLE: - tab_contents_->web_contents()->GetRenderViewHost()-> - ExecuteJavascriptInWebFrame( - string16(), - ASCIIToUTF16("WebInspector.showConsole();")); + CallClientFunction("WebInspector.showConsole", NULL); break; case DEVTOOLS_TOGGLE_ACTION_INSPECT: - tab_contents_->web_contents()->GetRenderViewHost()-> - ExecuteJavascriptInWebFrame( - string16(), - ASCIIToUTF16("WebInspector.toggleSearchingForNode();")); + CallClientFunction("WebInspector.toggleSearchingForNode", NULL); case DEVTOOLS_TOGGLE_ACTION_NONE: // Do nothing. break; @@ -737,11 +732,15 @@ void DevToolsWindow::OpenInNewTab(const std::string& url) { } } -void DevToolsWindow::SaveToFile(const std::string& suggested_file_name, - const std::string& content) { - DevToolsFileUtil::SaveAs(tab_contents_->profile(), - suggested_file_name, - content); +void DevToolsWindow::SaveToFile(const std::string& url, + const std::string& content, + bool save_as) { + file_helper_->Save(url, content, save_as); +} + +void DevToolsWindow::FileSavedAs(const std::string& url, const FilePath& path) { + StringValue url_value(url); + CallClientFunction("WebInspector.savedURL", &url_value); } content::JavaScriptDialogCreator* DevToolsWindow::GetJavaScriptDialogCreator() { -- cgit v1.1