Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3631)

Unified Diff: chrome/browser/ui/views/select_file_dialog.cc

Issue 8526019: Removing select_file_dialog.cc which is dead code. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/select_file_dialog.cc
diff --git a/chrome/browser/ui/views/select_file_dialog.cc b/chrome/browser/ui/views/select_file_dialog.cc
deleted file mode 100644
index 288d2ed7fcc4e648bfcd042670f0a152ac4d06ff..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/views/select_file_dialog.cc
+++ /dev/null
@@ -1,487 +0,0 @@
-// Copyright (c) 2011 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/ui/shell_dialogs.h"
-
-#include "base/bind.h"
-#include "base/file_path.h"
-#include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/string_util.h"
-#include "base/sys_string_conversions.h"
-#include "base/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_dialogs.h"
-#include "chrome/browser/ui/browser_list.h"
-#include "chrome/browser/ui/views/html_dialog_view.h"
-#include "chrome/browser/ui/webui/html_dialog_ui.h"
-#include "chrome/common/url_constants.h"
-#include "content/browser/tab_contents/tab_contents.h"
-#include "content/public/browser/browser_thread.h"
-#include "grit/generated_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "views/window/non_client_view.h"
-
-using content::BrowserThread;
-
-namespace {
-
-const char kKeyNamePath[] = "path";
-const int kSaveCompletePageIndex = 2;
-
-} // namespace
-
-// Implementation of SelectFileDialog that shows an UI for choosing a file
-// or folder.
-class SelectFileDialogImpl : public SelectFileDialog {
- public:
- explicit SelectFileDialogImpl(Listener* listener);
-
- // BaseShellDialog implementation.
- virtual bool IsRunning(gfx::NativeWindow parent_window) const;
- virtual void ListenerDestroyed();
-
- protected:
- // SelectFileDialog implementation.
- // |params| is user data we pass back via the Listener interface.
- virtual void SelectFileImpl(Type type,
- const string16& title,
- const FilePath& default_path,
- const FileTypeInfo* file_types,
- int file_type_index,
- const FilePath::StringType& default_extension,
- gfx::NativeWindow owning_window,
- void* params);
- virtual bool HasMultipleFileTypeChoicesImpl();
-
- private:
- virtual ~SelectFileDialogImpl();
-
- class FileBrowseDelegate : public HtmlDialogUIDelegate {
- public:
- FileBrowseDelegate(SelectFileDialogImpl* owner,
- Type type,
- const std::wstring& title,
- const FilePath& default_path,
- const FileTypeInfo* file_types,
- int file_type_index,
- const FilePath::StringType& default_extension,
- gfx::NativeWindow parent,
- void* params);
-
- // Owner of this FileBrowseDelegate.
- scoped_refptr<SelectFileDialogImpl> owner_;
-
- // Parent window.
- gfx::NativeWindow parent_;
-
- // The type of dialog we are showing the user.
- Type type_;
-
- // The dialog title.
- string16 title_;
-
- // Default path of the file dialog.
- FilePath default_path_;
-
- // The file filters.
- FileTypeInfo file_types_;
-
- // The index of the default selected file filter.
- // Note: This starts from 1, not 0.
- int file_type_index_;
-
- // Default extension to be added to file if user does not type one.
- FilePath::StringType default_extension_;
-
- // Associated user data.
- void* params_;
-
- private:
- ~FileBrowseDelegate();
-
- // Overridden from HtmlDialogUI::Delegate:
- virtual bool IsDialogModal() const OVERRIDE;
- virtual string16 GetDialogTitle() const OVERRIDE;
- virtual GURL GetDialogContentURL() const OVERRIDE;
- virtual void GetWebUIMessageHandlers(
- std::vector<WebUIMessageHandler*>* handlers) const OVERRIDE;
- virtual void GetDialogSize(gfx::Size* size) const OVERRIDE;
- virtual std::string GetDialogArgs() const OVERRIDE;
- virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE;
- virtual void OnCloseContents(TabContents* source, bool* out_close_dialog)
- OVERRIDE {
- }
- virtual bool ShouldShowDialogTitle() const OVERRIDE { return true; }
- virtual bool HandleContextMenu(const ContextMenuParams& params) OVERRIDE {
- return true;
- }
-
- DISALLOW_COPY_AND_ASSIGN(FileBrowseDelegate);
- };
-
- class FileBrowseDelegateHandler : public WebUIMessageHandler {
- public:
- explicit FileBrowseDelegateHandler(FileBrowseDelegate* delegate);
-
- // WebUIMessageHandler implementation.
- virtual void RegisterMessages() OVERRIDE;
-
- // Callback for the "setDialogTitle" message.
- void HandleSetDialogTitle(const ListValue* args);
-
- private:
- FileBrowseDelegate* delegate_;
-
- DISALLOW_COPY_AND_ASSIGN(FileBrowseDelegateHandler);
- };
-
- // Notification from FileBrowseDelegate when file browse UI is dismissed.
- void OnDialogClosed(FileBrowseDelegate* delegate, const std::string& json);
-
- // The set of all parent windows for which we are currently running dialogs.
- std::set<gfx::NativeWindow> parents_;
-
- // The set of all FileBrowseDelegate that we are currently running.
- std::set<FileBrowseDelegate*> delegates_;
-
- DISALLOW_COPY_AND_ASSIGN(SelectFileDialogImpl);
-};
-
-// static
-SelectFileDialog* SelectFileDialog::Create(Listener* listener) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::FILE));
- return new SelectFileDialogImpl(listener);
-}
-
-SelectFileDialogImpl::SelectFileDialogImpl(Listener* listener)
- : SelectFileDialog(listener) {
-}
-
-SelectFileDialogImpl::~SelectFileDialogImpl() {
- // All dialogs should be dismissed by now.
- DCHECK(parents_.empty() && delegates_.empty());
-}
-
-bool SelectFileDialogImpl::IsRunning(gfx::NativeWindow parent_window) const {
- return parent_window && parents_.find(parent_window) != parents_.end();
-}
-
-void SelectFileDialogImpl::ListenerDestroyed() {
- listener_ = NULL;
-}
-
-void SelectFileDialogImpl::SelectFileImpl(
- Type type,
- const string16& title,
- const FilePath& default_path,
- const FileTypeInfo* file_types,
- int file_type_index,
- const FilePath::StringType& default_extension,
- gfx::NativeWindow owning_window,
- void* params) {
- std::wstring title_string;
- if (title.empty()) {
- int string_id;
- switch (type) {
- case SELECT_FOLDER:
- string_id = IDS_SELECT_FOLDER_DIALOG_TITLE;
- break;
- case SELECT_OPEN_FILE:
- case SELECT_OPEN_MULTI_FILE:
- string_id = IDS_OPEN_FILE_DIALOG_TITLE;
- break;
- case SELECT_SAVEAS_FILE:
- string_id = IDS_SAVE_AS_DIALOG_TITLE;
- break;
- default:
- NOTREACHED();
- return;
- }
- title_string = UTF16ToWide(l10n_util::GetStringUTF16(string_id));
- } else {
- title_string = UTF16ToWide(title);
- }
-
- if (owning_window)
- parents_.insert(owning_window);
-
- FileBrowseDelegate* file_browse_delegate = new FileBrowseDelegate(this,
- type, title_string, default_path, file_types, file_type_index,
- default_extension, owning_window, params);
- delegates_.insert(file_browse_delegate);
-
- Browser* browser = BrowserList::FindBrowserWithWindow(owning_window);
- // As SelectFile may be invoked after a delay, it is entirely possible for
- // it be invoked when no browser is around. Silently ignore this case.
- if (browser)
- browser->BrowserShowHtmlDialog(file_browse_delegate, owning_window);
-}
-
-bool SelectFileDialogImpl::HasMultipleFileTypeChoicesImpl() {
- return file_types_.extensions.size() > 1;
-}
-
-void SelectFileDialogImpl::OnDialogClosed(FileBrowseDelegate* delegate,
- const std::string& json) {
- // Nothing to do if listener_ is gone.
-
- if (!listener_)
- return;
-
- bool notification_fired = false;
-
- if (!json.empty()) {
- scoped_ptr<Value> value(base::JSONReader::Read(json, false));
- if (!value.get() || !value->IsType(Value::TYPE_DICTIONARY)) {
- // Bad json value returned.
- NOTREACHED();
- } else {
- const DictionaryValue* dict = static_cast<DictionaryValue*>(value.get());
- if (delegate->type_ == SELECT_OPEN_FILE ||
- delegate->type_ == SELECT_SAVEAS_FILE ||
- delegate->type_ == SELECT_FOLDER) {
- std::string path_string;
- if (dict->HasKey(kKeyNamePath) &&
- dict->GetString(kKeyNamePath, &path_string)) {
-#if defined(OS_WIN)
- FilePath path(base::SysUTF8ToWide(path_string));
-#else
- FilePath path(
- base::SysWideToNativeMB(base::SysUTF8ToWide(path_string)));
-#endif
- listener_->
- FileSelected(path, kSaveCompletePageIndex, delegate->params_);
- notification_fired = true;
- }
- } else if (delegate->type_ == SELECT_OPEN_MULTI_FILE) {
- ListValue* paths_value = NULL;
- if (dict->HasKey(kKeyNamePath) &&
- dict->GetList(kKeyNamePath, &paths_value) &&
- paths_value) {
- std::vector<FilePath> paths;
- paths.reserve(paths_value->GetSize());
- for (size_t i = 0; i < paths_value->GetSize(); ++i) {
- std::string path_string;
- if (paths_value->GetString(i, &path_string) &&
- !path_string.empty()) {
-#if defined(OS_WIN)
- FilePath path(base::SysUTF8ToWide(path_string));
-#else
- FilePath path(
- base::SysWideToNativeMB(base::SysUTF8ToWide(path_string)));
-#endif
- paths.push_back(path);
- }
- }
-
- listener_->MultiFilesSelected(paths, delegate->params_);
- notification_fired = true;
- }
- } else {
- NOTREACHED();
- }
- }
- }
-
- // Always notify listener when dialog is dismissed.
- if (!notification_fired)
- listener_->FileSelectionCanceled(delegate->params_);
-
- parents_.erase(delegate->parent_);
- delegates_.erase(delegate);
-}
-
-SelectFileDialogImpl::FileBrowseDelegate::FileBrowseDelegate(
- SelectFileDialogImpl* owner,
- Type type,
- const std::wstring& title,
- const FilePath& default_path,
- const FileTypeInfo* file_types,
- int file_type_index,
- const FilePath::StringType& default_extension,
- gfx::NativeWindow parent,
- void* params)
- : owner_(owner),
- parent_(parent),
- type_(type),
- title_(WideToUTF16Hack(title)),
- default_path_(default_path),
- file_type_index_(file_type_index),
- default_extension_(default_extension),
- params_(params) {
- if (file_types)
- file_types_ = *file_types;
- else
- file_types_.include_all_files = true;
-}
-
-SelectFileDialogImpl::FileBrowseDelegate::~FileBrowseDelegate() {
-}
-
-bool SelectFileDialogImpl::FileBrowseDelegate::IsDialogModal() const {
- return true;
-}
-
-string16 SelectFileDialogImpl::FileBrowseDelegate::GetDialogTitle() const {
- return title_;
-}
-
-GURL SelectFileDialogImpl::FileBrowseDelegate::GetDialogContentURL() const {
-#if defined(USE_AURA)
- // TODO(saintlou): The current SelectFileDialogImpl assumes chromeos==1
- std::string url_string;
-#else
- std::string url_string(chrome::kChromeUIFileBrowseURL);
-#endif
- return GURL(url_string);
-}
-
-void SelectFileDialogImpl::FileBrowseDelegate::GetWebUIMessageHandlers(
- std::vector<WebUIMessageHandler*>* handlers) const {
- handlers->push_back(new FileBrowseDelegateHandler(
- const_cast<FileBrowseDelegate*>(this)));
- return;
-}
-
-void SelectFileDialogImpl::FileBrowseDelegate::GetDialogSize(
- gfx::Size* size) const {
- size->SetSize(320, 240);
-}
-
-std::string SelectFileDialogImpl::FileBrowseDelegate::GetDialogArgs() const {
-#if defined(USE_AURA)
- // TODO(saintlou): The current SelectFileDialogImpl does not seem to work
- // when chromeos==0.
- return std::string();
-#else
- // SelectFile inputs as json.
- // {
- // "type" : "open", // (or "open_multiple", "save", "folder"
- // "all_files" : true,
- // "file_types" : {
- // "exts" : [ ["htm", "html"], ["txt"] ],
- // "desc" : [ "HTML files", "Text files" ],
- // },
- // "file_type_index" : 1, // 1-based file type index.
- // }
- // See browser/ui/shell_dialogs.h for more details.
-
- std::string type_string;
- switch (type_) {
- case SELECT_FOLDER:
- type_string = "folder";
- break;
- case SELECT_OPEN_FILE:
- type_string = "open";
- break;
- case SELECT_OPEN_MULTI_FILE:
- type_string = "open_multiple";
- break;
- case SELECT_SAVEAS_FILE:
- type_string = "save";
- break;
- default:
- NOTREACHED();
- return std::string();
- }
-
- std::string exts_list;
- std::string desc_list;
- for (size_t i = 0; i < file_types_.extensions.size(); ++i) {
- DCHECK(!file_types_.extensions[i].empty());
-
- std::string exts;
- for (size_t j = 0; j < file_types_.extensions[i].size(); ++j) {
- if (!exts.empty())
- exts.append(",");
- base::StringAppendF(&exts, "\"%s\"",
- file_types_.extensions[i][j].c_str());
- }
-
- if (!exts_list.empty())
- exts_list.append(",");
- base::StringAppendF(&exts_list, "[%s]", exts.c_str());
-
- std::string desc;
- if (i < file_types_.extension_description_overrides.size()) {
- desc = UTF16ToUTF8(file_types_.extension_description_overrides[i]);
- } else {
-#if defined(OS_WIN)
- desc = WideToUTF8(file_types_.extensions[i][0]);
-#elif defined(OS_POSIX)
- desc = file_types_.extensions[i][0];
-#else
- NOTIMPLEMENTED();
-#endif
- }
-
- if (!desc_list.empty())
- desc_list.append(",");
- base::StringAppendF(&desc_list, "\"%s\"", desc.c_str());
- }
-
- std::string filename = default_path_.BaseName().value();
-
- return StringPrintf("{"
- "\"type\":\"%s\","
- "\"all_files\":%s,"
- "\"current_file\":\"%s\","
- "\"file_types\":{\"exts\":[%s],\"desc\":[%s]},"
- "\"file_type_index\":%d"
- "}",
- type_string.c_str(),
- file_types_.include_all_files ? "true" : "false",
- filename.c_str(),
- exts_list.c_str(),
- desc_list.c_str(),
- file_type_index_);
-#endif
-}
-
-void SelectFileDialogImpl::FileBrowseDelegate::OnDialogClosed(
- const std::string& json_retval) {
- owner_->OnDialogClosed(this, json_retval);
- delete this;
- return;
-}
-
-SelectFileDialogImpl::FileBrowseDelegateHandler::FileBrowseDelegateHandler(
- FileBrowseDelegate* delegate)
- : delegate_(delegate) {
-}
-
-void SelectFileDialogImpl::FileBrowseDelegateHandler::RegisterMessages() {
- web_ui_->RegisterMessageCallback("setDialogTitle",
- base::Bind(&FileBrowseDelegateHandler::HandleSetDialogTitle, this));
-}
-
-void SelectFileDialogImpl::FileBrowseDelegateHandler::HandleSetDialogTitle(
- const ListValue* args) {
-#if !defined(USE_AURA)
- // TODO(saintlou): The current SelectFileDialogImpl does not seem to work
- // when chromeos==0.
- std::wstring new_title = UTF16ToWideHack(ExtractStringValue(args));
- if (new_title != delegate_->title_) {
- delegate_->title_ = new_title;
-
- // Notify the containing view about the title change.
- // The current HtmlDialogUIDelegate and HtmlDialogView does not support
- // dynamic title change. We hijacked the mechanism between HTMLDialogUI
- // and HtmlDialogView to get the HtmlDialogView and forced it to update
- // its title.
- // TODO(xiyuan): Change this when the infrastructure is improved.
- HtmlDialogUIDelegate** delegate = HtmlDialogUI::GetPropertyAccessor().
- GetProperty(web_ui_->tab_contents()->property_bag());
- HtmlDialogView* containing_view = static_cast<HtmlDialogView*>(*delegate);
- DCHECK(containing_view);
-
- containing_view->GetWindow()->UpdateWindowTitle();
- containing_view->GetWindow()->non_client_view()->SchedulePaint();
- }
-#endif
-}
« no previous file with comments | « no previous file | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698