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

Unified Diff: chrome/installer/util/html_dialog_impl.cc

Issue 7309008: Change the system-level EULA dialog to not use GET parameters with res:// urls. Instead use the d... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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/installer/util/html_dialog.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/html_dialog_impl.cc
===================================================================
--- chrome/installer/util/html_dialog_impl.cc (revision 91469)
+++ chrome/installer/util/html_dialog_impl.cc (working copy)
@@ -1,23 +1,16 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// 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 <windows.h>
+#include <mshtmhst.h>
#include <urlmon.h>
+#include "base/win/scoped_variant.h"
#include "chrome/installer/util/html_dialog.h"
#pragma comment(lib, "urlmon.lib")
-namespace {
-// Signature of MSHTML.DLL ShowHTMLDlg.
-typedef HRESULT (CALLBACK *ShowHTMLDlg)(HWND parent_hwnd,
- IMoniker *moniker,
- VARIANT *in_args,
- TCHAR *options,
- VARIANT *out_args);
-} // namespace.
-
namespace installer {
// Windows implementation of the HTML dialog class. The main danger with
@@ -47,7 +40,8 @@
class HTMLDialogWin : public HTMLDialog {
public:
- explicit HTMLDialogWin(const std::wstring& url) : url_(url) {
+ HTMLDialogWin(const std::wstring& url, const std::wstring& param)
+ : url_(url), param_(param) {
if (!mshtml_)
mshtml_ = LoadLibrary(L"MSHTML.DLL");
}
@@ -70,13 +64,15 @@
static LRESULT CALLBACK MsgFilter(int code, WPARAM wParam, LPARAM lParam);
std::wstring url_;
+ std::wstring param_;
static HHOOK hook_;
static HINSTANCE mshtml_;
static CustomizationCallback* callback_;
};
-HTMLDialog* CreateNativeHTMLDialog(const std::wstring& url) {
- return new HTMLDialogWin(url);
+HTMLDialog* CreateNativeHTMLDialog(const std::wstring& url,
+ const std::wstring& param) {
+ return new HTMLDialogWin(url, param);
}
HHOOK HTMLDialogWin::hook_ = NULL;
@@ -106,13 +102,14 @@
int* result) {
if (!mshtml_)
return false;
- ShowHTMLDlg show_html_dialog =
- reinterpret_cast<ShowHTMLDlg>(GetProcAddress(mshtml_, "ShowHTMLDialog"));
+ SHOWHTMLDIALOGFN* show_html_dialog =
+ reinterpret_cast<SHOWHTMLDIALOGFN*>(
+ GetProcAddress(mshtml_, "ShowHTMLDialog"));
if (!show_html_dialog)
return false;
IMoniker *url_moniker = NULL;
- ::CreateURLMoniker(NULL, url_.c_str(), &url_moniker);
+ ::CreateURLMonikerEx(NULL, url_.c_str(), &url_moniker, URL_MK_UNIFORM);
if (!url_moniker)
return false;
@@ -126,11 +123,19 @@
callback_ = callback;
}
+ // Pass our parameter to the dialog in the dialogArguments property of
+ // the window object.
+ base::win::ScopedVariant dialog_args(param_.c_str());
+
VARIANT v_result;
::VariantInit(&v_result);
// Creates the window with the embedded IE control in a modal loop.
- HRESULT hr = show_html_dialog(NULL, url_moniker, NULL, extra_args, &v_result);
+ HRESULT hr = show_html_dialog(NULL,
+ url_moniker,
+ dialog_args.AsInput(),
+ extra_args,
+ &v_result);
url_moniker->Release();
if (v_result.vt == VT_I4)
@@ -163,8 +168,9 @@
reinterpret_cast<LPARAM>(ico));
}
-EulaHTMLDialog::EulaHTMLDialog(const std::wstring& file) {
- dialog_ = CreateNativeHTMLDialog(file);
+EulaHTMLDialog::EulaHTMLDialog(const std::wstring& file,
+ const std::wstring& param) {
+ dialog_ = CreateNativeHTMLDialog(file, param);
}
EulaHTMLDialog::~EulaHTMLDialog() {
« no previous file with comments | « chrome/installer/util/html_dialog.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698