Index: chrome/browser/debugger/devtools_file_helper.cc |
diff --git a/chrome/browser/debugger/devtools_file_helper.cc b/chrome/browser/debugger/devtools_file_helper.cc |
deleted file mode 100644 |
index 2acebea47e909d6949001b921cb795b72f3e3cac..0000000000000000000000000000000000000000 |
--- a/chrome/browser/debugger/devtools_file_helper.cc |
+++ /dev/null |
@@ -1,199 +0,0 @@ |
-// Copyright (c) 2012 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/devtools_file_helper.h" |
- |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/file_util.h" |
-#include "base/lazy_instance.h" |
-#include "base/md5.h" |
-#include "base/value_conversions.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/download/download_prefs.h" |
-#include "chrome/browser/prefs/pref_service.h" |
-#include "chrome/browser/prefs/scoped_user_pref_update.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/ui/chrome_select_file_policy.h" |
-#include "chrome/common/pref_names.h" |
-#include "content/public/browser/browser_context.h" |
-#include "content/public/browser/download_manager.h" |
-#include "ui/base/dialogs/select_file_dialog.h" |
- |
-using content::BrowserContext; |
-using content::BrowserThread; |
-using content::DownloadManager; |
- |
-namespace { |
- |
-base::LazyInstance<FilePath>::Leaky |
- g_last_save_path = LAZY_INSTANCE_INITIALIZER; |
- |
-} // namespace |
- |
-class DevToolsFileHelper::SaveAsDialog : public ui::SelectFileDialog::Listener, |
- public base::RefCounted<SaveAsDialog> { |
- public: |
- explicit SaveAsDialog(DevToolsFileHelper* helper) |
- : helper_(helper) { |
- select_file_dialog_ = ui::SelectFileDialog::Create( |
- this, new ChromeSelectFilePolicy(NULL)); |
- } |
- |
- void ResetHelper() { |
- helper_ = NULL; |
- } |
- |
- void Show(const std::string& url, |
- const FilePath& initial_path, |
- const std::string& content) { |
- AddRef(); // Balanced in the three listener outcomes. |
- |
- url_ = url; |
- content_ = content; |
- |
- select_file_dialog_->SelectFile(ui::SelectFileDialog::SELECT_SAVEAS_FILE, |
- string16(), |
- initial_path, |
- NULL, |
- 0, |
- FILE_PATH_LITERAL(""), |
- NULL, |
- NULL); |
- } |
- |
- // ui::SelectFileDialog::Listener implementation. |
- virtual void FileSelected(const FilePath& path, |
- int index, void* params) { |
- if (helper_) |
- helper_->FileSelected(url_, path, content_); |
- Release(); // Balanced in ::Show. |
- } |
- |
- virtual void MultiFilesSelected( |
- const std::vector<FilePath>& files, void* params) { |
- Release(); // Balanced in ::Show. |
- NOTREACHED() << "Should not be able to select multiple files"; |
- } |
- |
- virtual void FileSelectionCanceled(void* params) { |
- Release(); // Balanced in ::Show. |
- } |
- |
- private: |
- friend class base::RefCounted<SaveAsDialog>; |
- virtual ~SaveAsDialog() {} |
- |
- scoped_refptr<ui::SelectFileDialog> select_file_dialog_; |
- std::string url_; |
- std::string content_; |
- DevToolsFileHelper* helper_; |
-}; |
- |
-// static |
-void DevToolsFileHelper::WriteFile(const FilePath& path, |
- const std::string& content) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- DCHECK(!path.empty()); |
- |
- file_util::WriteFile(path, content.c_str(), content.length()); |
-} |
- |
-// static |
-void DevToolsFileHelper::AppendToFile(const FilePath& path, |
- const std::string& content) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- DCHECK(!path.empty()); |
- |
- file_util::AppendToFile(path, content.c_str(), content.length()); |
-} |
- |
-DevToolsFileHelper::DevToolsFileHelper(Profile* profile, Delegate* delegate) |
- : profile_(profile), |
- delegate_(delegate) { |
-} |
- |
-DevToolsFileHelper::~DevToolsFileHelper() { |
- if (save_as_dialog_) |
- save_as_dialog_->ResetHelper(); |
-} |
- |
-void DevToolsFileHelper::Save(const std::string& url, |
- const std::string& content, |
- bool save_as) { |
- PathsMap::iterator it = saved_files_.find(url); |
- if (it != saved_files_.end() && !save_as) { |
- FileSelected(url, it->second, content); |
- return; |
- } |
- |
- if (save_as_dialog_) |
- save_as_dialog_->ResetHelper(); |
- |
- const DictionaryValue* file_map = |
- profile_->GetPrefs()->GetDictionary(prefs::kDevToolsEditedFiles); |
- FilePath initial_path; |
- |
- const Value* path_value; |
- if (file_map->Get(base::MD5String(url), &path_value)) |
- base::GetValueAsFilePath(*path_value, &initial_path); |
- |
- if (initial_path.empty()) { |
- GURL gurl(url); |
- std::string suggested_file_name = gurl.is_valid() ? |
- gurl.ExtractFileName() : url; |
- |
- if (suggested_file_name.length() > 64) |
- suggested_file_name = suggested_file_name.substr(0, 64); |
- |
- if (!g_last_save_path.Pointer()->empty()) { |
- initial_path = g_last_save_path.Pointer()->DirName().AppendASCII( |
- suggested_file_name); |
- } else { |
- FilePath download_path = DownloadPrefs::FromDownloadManager( |
- BrowserContext::GetDownloadManager(profile_))->DownloadPath(); |
- initial_path = download_path.AppendASCII(suggested_file_name); |
- } |
- } |
- |
- save_as_dialog_ = new SaveAsDialog(this); |
- save_as_dialog_->Show(url, initial_path, content); |
-} |
- |
-void DevToolsFileHelper::Append(const std::string& url, |
- const std::string& content) { |
- PathsMap::iterator it = saved_files_.find(url); |
- if (it == saved_files_.end()) |
- return; |
- |
- delegate_->AppendedTo(url); |
- |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind(&DevToolsFileHelper::AppendToFile, |
- it->second, |
- content)); |
-} |
- |
-void DevToolsFileHelper::FileSelected(const std::string& url, |
- const FilePath& path, |
- const std::string& content) { |
- *g_last_save_path.Pointer() = path; |
- saved_files_[url] = path; |
- |
- DictionaryPrefUpdate update(profile_->GetPrefs(), |
- prefs::kDevToolsEditedFiles); |
- DictionaryValue* files_map = update.Get(); |
- files_map->SetWithoutPathExpansion(base::MD5String(url), |
- base::CreateFilePathValue(path)); |
- delegate_->FileSavedAs(url); |
- |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind(&DevToolsFileHelper::WriteFile, |
- path, |
- content)); |
-} |