summaryrefslogtreecommitdiffstats
path: root/chrome/browser/debugger/devtools_window.cc
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-04 15:23:50 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-04 15:23:50 +0000
commit299750243f4728d8de6a44dfac874ac61762515d (patch)
treecc0ccdbc7bb20832594a7b1b604615ba91bb32c7 /chrome/browser/debugger/devtools_window.cc
parentee5d25ec33321b65a6bf0bb0f3d6c64916731c5b (diff)
downloadchromium_src-299750243f4728d8de6a44dfac874ac61762515d.zip
chromium_src-299750243f4728d8de6a44dfac874ac61762515d.tar.gz
chromium_src-299750243f4728d8de6a44dfac874ac61762515d.tar.bz2
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
Diffstat (limited to 'chrome/browser/debugger/devtools_window.cc')
-rw-r--r--chrome/browser/debugger/devtools_window.cc55
1 files changed, 27 insertions, 28 deletions
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() {