summaryrefslogtreecommitdiffstats
path: root/remoting/base
diff options
context:
space:
mode:
authoralexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-17 22:24:48 +0000
committeralexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-17 22:24:48 +0000
commite39e80ee2e7cfc44ffbd87cc249e00d50a6e1069 (patch)
tree509c7b4ec64e8003d65c7d3e6ab81f1ad0812070 /remoting/base
parentb40ca7d30b5424f983d5c8a53f6468076f6c1ddd (diff)
downloadchromium_src-e39e80ee2e7cfc44ffbd87cc249e00d50a6e1069.zip
chromium_src-e39e80ee2e7cfc44ffbd87cc249e00d50a6e1069.tar.gz
chromium_src-e39e80ee2e7cfc44ffbd87cc249e00d50a6e1069.tar.bz2
Added support of DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF to remoting::dispatch::Invoke().
According to MSDN (http://msdn.microsoft.com/en-us/library/windows/desktop/ms221479(v=vs.85).aspx) when IDispatch::Invoke() is used with DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF, the property setter's parameter must be named. Review URL: https://chromiumcodereview.appspot.com/10736059 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147106 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/base')
-rw-r--r--remoting/base/dispatch_win.h88
-rw-r--r--remoting/base/dispatch_win.h.pump11
2 files changed, 90 insertions, 9 deletions
diff --git a/remoting/base/dispatch_win.h b/remoting/base/dispatch_win.h
index aa20710..9578ab8 100644
--- a/remoting/base/dispatch_win.h
+++ b/remoting/base/dispatch_win.h
@@ -134,8 +134,17 @@ HRESULT Invoke(IDispatch* object,
disp_result = &result;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { NULL, NULL, 0, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
@@ -175,8 +184,17 @@ HRESULT Invoke(IDispatch* object,
if (FAILED(hr))
return hr;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { disp_args, NULL, 1, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
@@ -222,8 +240,17 @@ HRESULT Invoke(IDispatch* object,
if (FAILED(hr))
return hr;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { disp_args, NULL, 2, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
@@ -274,8 +301,17 @@ HRESULT Invoke(IDispatch* object,
if (FAILED(hr))
return hr;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { disp_args, NULL, 3, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
@@ -331,8 +367,17 @@ HRESULT Invoke(IDispatch* object,
if (FAILED(hr))
return hr;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { disp_args, NULL, 4, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
@@ -393,8 +438,17 @@ HRESULT Invoke(IDispatch* object,
if (FAILED(hr))
return hr;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { disp_args, NULL, 5, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
@@ -461,8 +515,17 @@ HRESULT Invoke(IDispatch* object,
if (FAILED(hr))
return hr;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { disp_args, NULL, 6, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
@@ -534,8 +597,17 @@ HRESULT Invoke(IDispatch* object,
if (FAILED(hr))
return hr;
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
DISPPARAMS disp_params = { disp_args, NULL, 7, 0 };
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))
diff --git a/remoting/base/dispatch_win.h.pump b/remoting/base/dispatch_win.h.pump
index 57439e5..c6a6d5a 100644
--- a/remoting/base/dispatch_win.h.pump
+++ b/remoting/base/dispatch_win.h.pump
@@ -162,7 +162,10 @@ $for ARG [[
]]
- // Invoke the method.
+ // Invoke the method passing the parameters via the DISPPARAMS structure.
+ // DISPATCH_PROPERTYPUT and DISPATCH_PROPERTYPUTREF require the parameter of
+ // the property setter to be named, so |cNamedArgs| and |rgdispidNamedArgs|
+ // structure members should be initialized.
$if ARITY > 0 [[
DISPPARAMS disp_params = { disp_args, NULL, $(ARITY), 0 };
@@ -170,6 +173,12 @@ $if ARITY > 0 [[
DISPPARAMS disp_params = { NULL, NULL, 0, 0 };
]]
+ DISPID dispid_named = DISPID_PROPERTYPUT;
+ if (flags == DISPATCH_PROPERTYPUT || flags == DISPATCH_PROPERTYPUTREF) {
+ disp_params.cNamedArgs = 1;
+ disp_params.rgdispidNamedArgs = &dispid_named;
+ }
+
hr = object->Invoke(disp_id, IID_NULL, LOCALE_USER_DEFAULT, flags,
&disp_params, disp_result, NULL, NULL);
if (FAILED(hr))