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

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

Issue 2053001: Fix crash when opening "Select certificate file" in OOBE. (Closed) Base URL: git://codf21.jail/chromium.git
Patch Set: added correct way to check for OOBE/login mode Created 10 years, 7 months 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 | « chrome/browser/views/html_dialog_view.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/views/select_file_dialog.cc
diff --git a/chrome/browser/views/select_file_dialog.cc b/chrome/browser/views/select_file_dialog.cc
index c50c1c1ffa957ee935221c5f73ab313c6a14f9d9..c8cd8390584f106787f166e134c1e13bbe696b2c 100644
--- a/chrome/browser/views/select_file_dialog.cc
+++ b/chrome/browser/views/select_file_dialog.cc
@@ -18,12 +18,15 @@
#include "chrome/browser/dom_ui/html_dialog_ui.h"
#include "chrome/browser/shell_dialogs.h"
#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/views/browser_dialogs.h"
#include "chrome/browser/views/html_dialog_view.h"
#include "chrome/common/url_constants.h"
#include "grit/generated_resources.h"
#include "views/window/non_client_view.h"
#include "views/window/window.h"
+#include "chrome/browser/profile_manager.h"
+
namespace {
static const wchar_t* kKeyNamePath = L"path";
@@ -52,6 +55,10 @@ class SelectFileDialogImpl : public SelectFileDialog {
gfx::NativeWindow owning_window,
void* params);
+ virtual void set_browser_mode(bool value) {
+ browser_mode_ = value;
+ }
+
private:
virtual ~SelectFileDialogImpl();
@@ -130,12 +137,19 @@ class SelectFileDialogImpl : public SelectFileDialog {
// Notification from FileBrowseDelegate when file browse UI is dismissed.
void OnDialogClosed(FileBrowseDelegate* delegate, const std::string& json);
+ // Callback method to open HTML
+ void OpenHtmlDialog(gfx::NativeWindow owning_window,
+ FileBrowseDelegate* file_browse_delegate);
+
// 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_;
+ // True when opening in browser, otherwise in OOBE/login mode.
+ bool browser_mode_;
+
// The listener to be notified of selection completion.
Listener* listener_;
@@ -150,7 +164,8 @@ SelectFileDialog* SelectFileDialog::Create(Listener* listener) {
}
SelectFileDialogImpl::SelectFileDialogImpl(Listener* listener)
- : listener_(listener) {
+ : browser_mode_(true),
+ listener_(listener) {
}
SelectFileDialogImpl::~SelectFileDialogImpl() {
@@ -206,9 +221,19 @@ void SelectFileDialogImpl::SelectFile(
default_extension, owning_window, params);
delegates_.insert(file_browse_delegate);
- Browser* browser = BrowserList::GetLastActive();
- DCHECK(browser);
- browser->BrowserShowHtmlDialog(file_browse_delegate, owning_window);
+ if (browser_mode_) {
+ Browser* browser = BrowserList::GetLastActive();
+ DCHECK(browser);
+ browser->BrowserShowHtmlDialog(file_browse_delegate, owning_window);
+ } else {
+ ChromeThread::PostTask(
+ ChromeThread::UI,
+ FROM_HERE,
+ NewRunnableMethod(this,
+ &SelectFileDialogImpl::OpenHtmlDialog,
+ owning_window,
+ file_browse_delegate));
+ }
}
void SelectFileDialogImpl::OnDialogClosed(FileBrowseDelegate* delegate,
@@ -271,6 +296,14 @@ void SelectFileDialogImpl::OnDialogClosed(FileBrowseDelegate* delegate,
delegates_.erase(delegate);
}
+void SelectFileDialogImpl::OpenHtmlDialog(
+ gfx::NativeWindow owning_window,
+ FileBrowseDelegate* file_browse_delegate) {
+ browser::ShowHtmlDialogView(owning_window,
+ ProfileManager::GetDefaultProfile(),
+ file_browse_delegate);
+}
+
SelectFileDialogImpl::FileBrowseDelegate::FileBrowseDelegate(
SelectFileDialogImpl* owner,
Type type,
« no previous file with comments | « chrome/browser/views/html_dialog_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698