OLD | NEW |
| (Empty) |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CHROME_TEST_ACTIVEX_TEST_CONTROL_CHROME_TEST_CONTROL_H__ | |
6 #define CHROME_TEST_ACTIVEX_TEST_CONTROL_CHROME_TEST_CONTROL_H__ | |
7 | |
8 #include <atlbase.h> | |
9 #include <atlcom.h> | |
10 #include <atlctl.h> | |
11 #include <comutil.h> | |
12 #include "activex_test_control.h" | |
13 #include "chrome/test/activex_test_control/chrome_test_control_cp.h" | |
14 #include "chrome/test/activex_test_control/resource.h" | |
15 | |
16 // ChromeTestControl | |
17 class ATL_NO_VTABLE ChromeTestControl | |
18 : public CComObjectRootEx<CComSingleThreadModel>, | |
19 public CStockPropImpl<ChromeTestControl, IChromeTestControl>, | |
20 public IPersistStreamInitImpl<ChromeTestControl>, | |
21 public IOleControlImpl<ChromeTestControl>, | |
22 public IOleObjectImpl<ChromeTestControl>, | |
23 public IOleInPlaceActiveObjectImpl<ChromeTestControl>, | |
24 public IViewObjectExImpl<ChromeTestControl>, | |
25 public IOleInPlaceObjectWindowlessImpl<ChromeTestControl>, | |
26 public ISupportErrorInfo, | |
27 public IConnectionPointContainerImpl<ChromeTestControl>, | |
28 public CProxy_IChromeTestControlEvents<ChromeTestControl>, | |
29 public IObjectWithSiteImpl<ChromeTestControl>, | |
30 public IServiceProviderImpl<ChromeTestControl>, | |
31 public IPersistStorageImpl<ChromeTestControl>, | |
32 public ISpecifyPropertyPagesImpl<ChromeTestControl>, | |
33 public IQuickActivateImpl<ChromeTestControl>, | |
34 public IDataObjectImpl<ChromeTestControl>, | |
35 public IProvideClassInfo2Impl<&CLSID_ChromeTestControl, | |
36 &__uuidof(_IChromeTestControlEvents), &LIBID_activex_test_controlLib>, | |
37 public IPropertyNotifySinkCP<ChromeTestControl>, | |
38 public IObjectSafetyImpl<ChromeTestControl, | |
39 INTERFACESAFE_FOR_UNTRUSTED_CALLER | | |
40 INTERFACESAFE_FOR_UNTRUSTED_DATA>, | |
41 public CComCoClass<ChromeTestControl, &CLSID_ChromeTestControl>, | |
42 public CComControl<ChromeTestControl> { | |
43 public: | |
44 ChromeTestControl() { | |
45 } | |
46 | |
47 DECLARE_OLEMISC_STATUS(OLEMISC_RECOMPOSEONRESIZE | | |
48 OLEMISC_CANTLINKINSIDE | | |
49 OLEMISC_INSIDEOUT | | |
50 OLEMISC_ACTIVATEWHENVISIBLE | | |
51 OLEMISC_SETCLIENTSITEFIRST) | |
52 | |
53 DECLARE_REGISTRY_RESOURCEID(IDR_CHROMETESTCONTROL) | |
54 | |
55 BEGIN_COM_MAP(ChromeTestControl) | |
56 COM_INTERFACE_ENTRY(IChromeTestControl) | |
57 COM_INTERFACE_ENTRY(IDispatch) | |
58 COM_INTERFACE_ENTRY(IViewObjectEx) | |
59 COM_INTERFACE_ENTRY(IViewObject2) | |
60 COM_INTERFACE_ENTRY(IViewObject) | |
61 COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) | |
62 COM_INTERFACE_ENTRY(IOleInPlaceObject) | |
63 COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless) | |
64 COM_INTERFACE_ENTRY(IOleInPlaceActiveObject) | |
65 COM_INTERFACE_ENTRY(IOleControl) | |
66 COM_INTERFACE_ENTRY(IOleObject) | |
67 COM_INTERFACE_ENTRY(IPersistStreamInit) | |
68 COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit) | |
69 COM_INTERFACE_ENTRY(ISupportErrorInfo) | |
70 COM_INTERFACE_ENTRY(IConnectionPointContainer) | |
71 COM_INTERFACE_ENTRY(ISpecifyPropertyPages) | |
72 COM_INTERFACE_ENTRY(IQuickActivate) | |
73 COM_INTERFACE_ENTRY(IPersistStorage) | |
74 COM_INTERFACE_ENTRY(IDataObject) | |
75 COM_INTERFACE_ENTRY(IProvideClassInfo) | |
76 COM_INTERFACE_ENTRY(IProvideClassInfo2) | |
77 COM_INTERFACE_ENTRY(IObjectWithSite) | |
78 COM_INTERFACE_ENTRY(IServiceProvider) | |
79 COM_INTERFACE_ENTRY_IID(IID_IObjectSafety, IObjectSafety) | |
80 END_COM_MAP() | |
81 | |
82 BEGIN_PROP_MAP(ChromeTestControl) | |
83 PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4) | |
84 PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4) | |
85 PROP_ENTRY_TYPE("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage, | |
86 VT_COLOR) | |
87 PROP_ENTRY_TYPE("BorderColor", DISPID_BORDERCOLOR, CLSID_StockColorPage, | |
88 VT_COLOR) | |
89 PROP_ENTRY_TYPE("Caption", DISPID_CAPTION, CLSID_NULL, VT_BSTR) | |
90 PROP_ENTRY_TYPE("ForeColor", DISPID_FORECOLOR, CLSID_StockColorPage, VT_COLOR) | |
91 // Example entries | |
92 // PROP_ENTRY("Property Description", dispid, clsid) | |
93 // PROP_PAGE(CLSID_StockColorPage) | |
94 END_PROP_MAP() | |
95 | |
96 BEGIN_CONNECTION_POINT_MAP(ChromeTestControl) | |
97 CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink) | |
98 CONNECTION_POINT_ENTRY(__uuidof(_IChromeTestControlEvents)) | |
99 END_CONNECTION_POINT_MAP() | |
100 | |
101 BEGIN_MSG_MAP(ChromeTestControl) | |
102 CHAIN_MSG_MAP(CComControl<ChromeTestControl>) | |
103 DEFAULT_REFLECTION_HANDLER() | |
104 END_MSG_MAP() | |
105 | |
106 // ISupportsErrorInfo | |
107 STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid) { | |
108 static const IID* arr[] = { | |
109 &IID_IChromeTestControl, | |
110 }; | |
111 | |
112 for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++) { | |
113 if (InlineIsEqualGUID(*arr[i], riid)) | |
114 return S_OK; | |
115 } | |
116 return S_FALSE; | |
117 } | |
118 | |
119 // IViewObjectEx | |
120 DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE) | |
121 | |
122 // IChromeTestControl | |
123 public: | |
124 HRESULT OnDraw(ATL_DRAWINFO& di); | |
125 | |
126 void OnBackColorChanged() { | |
127 ATLTRACE(_T("OnBackColorChanged\n")); | |
128 } | |
129 void OnBorderColorChanged() { | |
130 ATLTRACE(_T("OnBorderColorChanged\n")); | |
131 } | |
132 void OnCaptionChanged() { | |
133 ATLTRACE(_T("OnCaptionChanged\n")); | |
134 } | |
135 void OnForeColorChanged() { | |
136 ATLTRACE(_T("OnForeColorChanged\n")); | |
137 } | |
138 STDMETHOD(_InternalQueryService)(REFGUID guidService, REFIID riid, | |
139 void** ppvObject) { | |
140 return E_NOTIMPL; | |
141 } | |
142 | |
143 DECLARE_PROTECT_FINAL_CONSTRUCT() | |
144 | |
145 HRESULT FinalConstruct() { | |
146 return S_OK; | |
147 } | |
148 | |
149 void FinalRelease() { | |
150 } | |
151 | |
152 STDMETHOD(get_StringProp)(BSTR* val) { | |
153 *val = string_prop_.copy(); | |
154 return S_OK; | |
155 } | |
156 | |
157 STDMETHOD(put_StringProp)(BSTR val) { | |
158 string_prop_ = val; | |
159 return S_OK; | |
160 } | |
161 STDMETHOD(get_LongProp)(LONG* val) { | |
162 *val = long_prop_; | |
163 return S_OK; | |
164 } | |
165 | |
166 STDMETHOD(put_LongProp)(LONG val) { | |
167 long_prop_ = val; | |
168 return S_OK; | |
169 } | |
170 STDMETHOD(get_DoubleProp)(DOUBLE* val) { | |
171 *val = double_prop_; | |
172 return S_OK; | |
173 } | |
174 | |
175 STDMETHOD(put_DoubleProp)(DOUBLE val) { | |
176 double_prop_ = val; | |
177 return S_OK; | |
178 } | |
179 | |
180 STDMETHOD(get_BoolProp)(VARIANT_BOOL* val) { | |
181 *val = bool_prop_; | |
182 return S_OK; | |
183 } | |
184 | |
185 STDMETHOD(put_BoolProp)(VARIANT_BOOL val) { | |
186 bool_prop_ = val; | |
187 return S_OK; | |
188 } | |
189 | |
190 STDMETHOD(get_ByteProp)(BYTE* val) { | |
191 *val = byte_prop_; | |
192 return S_OK; | |
193 } | |
194 | |
195 STDMETHOD(put_ByteProp)(BYTE val) { | |
196 byte_prop_ = val; | |
197 return S_OK; | |
198 } | |
199 | |
200 STDMETHOD(get_FloatProp)(FLOAT* val) { | |
201 *val = float_prop_; | |
202 return S_OK; | |
203 } | |
204 | |
205 STDMETHOD(put_FloatProp)(FLOAT val) { | |
206 float_prop_ = val; | |
207 return S_OK; | |
208 } | |
209 | |
210 STDMETHOD(SetByte)(BYTE val) { | |
211 byte_prop_ = val; | |
212 return S_OK; | |
213 } | |
214 STDMETHOD(SetByteRet)(BYTE val, BYTE* ret) { | |
215 byte_prop_ = val; | |
216 *ret = val; | |
217 return S_OK; | |
218 } | |
219 STDMETHOD(SetStringRet)(BSTR val, BSTR* ret) { | |
220 string_prop_ = val; | |
221 *ret = string_prop_.copy(); | |
222 return S_OK; | |
223 } | |
224 STDMETHOD(BigSetMethodRet)(BSTR string_param, BYTE byte_param, | |
225 FLOAT float_param, VARIANT_BOOL bool_param, | |
226 BSTR* ret) { | |
227 string_prop_ = string_param; | |
228 byte_prop_ = byte_param; | |
229 float_prop_ = float_param; | |
230 bool_prop_ = bool_param; | |
231 *ret = SysAllocString(string_param); | |
232 return S_OK; | |
233 } | |
234 STDMETHOD(GetCookie)(BSTR* cookie) { | |
235 CComPtr<IOleContainer> container; | |
236 m_spClientSite->GetContainer(&container); | |
237 CComQIPtr<IHTMLDocument2> doc = container; | |
238 if (doc == NULL) { | |
239 *cookie = SysAllocString(L"Bad"); | |
240 return S_FALSE; | |
241 } else { | |
242 return doc->get_cookie(cookie); | |
243 } | |
244 } | |
245 | |
246 // These varialbes are used by CStockPropImpl invisibly and they have to be | |
247 // be public to be accessible. | |
248 OLE_COLOR m_clrBackColor; | |
249 OLE_COLOR m_clrBorderColor; | |
250 CComBSTR m_bstrCaption; | |
251 OLE_COLOR m_clrForeColor; | |
252 private: | |
253 _bstr_t string_prop_; | |
254 LONG long_prop_; | |
255 DOUBLE double_prop_; | |
256 VARIANT_BOOL bool_prop_; | |
257 BYTE byte_prop_; | |
258 FLOAT float_prop_; | |
259 }; | |
260 | |
261 OBJECT_ENTRY_AUTO(__uuidof(ChromeTestControl), ChromeTestControl) | |
262 | |
263 #endif // #ifndef CHROME_TEST_ACTIVEX_TEST_CONTROL_CHROME_TEST_CONTROL_H__ | |
OLD | NEW |