Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

279 lines
6.5 KiB

  1. /****************************************************************************
  2. *
  3. * ICWWALK.cpp
  4. *
  5. * Microsoft Confidential
  6. * Copyright (c) Microsoft Corporation 1992-1997
  7. * All rights reserved
  8. *
  9. * This module provides the implementation of the methods for
  10. * the CICWWalker class.
  11. *
  12. * 07/22/98 donaldm adapted from ICWCONNN
  13. *
  14. ***************************************************************************/
  15. #include "pre.h"
  16. #include "webvwids.h"
  17. HRESULT CICWWalker::Walk()
  18. {
  19. HRESULT hr = E_FAIL;
  20. if (m_pHTMLWalker)
  21. hr = m_pHTMLWalker->Walk();
  22. return (hr);
  23. }
  24. HRESULT CICWWalker::AttachToDocument(IWebBrowser2 *lpWebBrowser)
  25. {
  26. HRESULT hr = E_FAIL;
  27. if (m_pHTMLWalker)
  28. hr = m_pHTMLWalker->AttachToDocument(lpWebBrowser);
  29. return (hr);
  30. }
  31. HRESULT CICWWalker::ExtractUnHiddenText(BSTR* pbstrText)
  32. {
  33. HRESULT hr = E_FAIL;
  34. if (m_pHTMLWalker)
  35. hr = m_pHTMLWalker->ExtractUnHiddenText(pbstrText);
  36. return (hr);
  37. }
  38. HRESULT CICWWalker::AttachToMSHTML(BSTR bstrURL)
  39. {
  40. HRESULT hr = E_FAIL;
  41. if (m_pHTMLWalker)
  42. hr = m_pHTMLWalker->AttachToMSHTML(bstrURL);
  43. return (hr);
  44. }
  45. HRESULT CICWWalker::Detach()
  46. {
  47. HRESULT hr = E_FAIL;
  48. if (m_pHTMLWalker)
  49. hr = m_pHTMLWalker->Detach();
  50. return (hr);
  51. }
  52. HRESULT CICWWalker::InitForMSHTML()
  53. {
  54. HRESULT hr = E_FAIL;
  55. if (m_pHTMLWalker)
  56. hr = m_pHTMLWalker->InitForMSHTML();
  57. return (hr);
  58. }
  59. HRESULT CICWWalker::TermForMSHTML()
  60. {
  61. HRESULT hr = E_FAIL;
  62. if (m_pHTMLWalker)
  63. hr = m_pHTMLWalker->TermForMSHTML();
  64. return (hr);
  65. }
  66. HRESULT CICWWalker::LoadURLFromFile(BSTR bstrURL)
  67. {
  68. HRESULT hr = E_FAIL;
  69. if (m_pHTMLWalker)
  70. hr = m_pHTMLWalker->LoadURLFromFile(bstrURL);
  71. return (hr);
  72. }
  73. HRESULT CICWWalker::get_IsQuickFinish(BOOL* pbIsQuickFinish)
  74. {
  75. HRESULT hr = E_FAIL;
  76. if (m_pHTMLWalker)
  77. hr = m_pHTMLWalker->get_IsQuickFinish(pbIsQuickFinish);
  78. return (hr);
  79. }
  80. HRESULT CICWWalker::get_PageType(LPDWORD pdwPageType)
  81. {
  82. HRESULT hr = E_FAIL;
  83. if (m_pHTMLWalker)
  84. hr = m_pHTMLWalker->get_PageType(pdwPageType);
  85. return (hr);
  86. }
  87. HRESULT CICWWalker::get_PageFlag(LPDWORD pdwPageFlag)
  88. {
  89. HRESULT hr = E_FAIL;
  90. if (m_pHTMLWalker)
  91. hr = m_pHTMLWalker->get_PageFlag(pdwPageFlag);
  92. return (hr);
  93. }
  94. HRESULT CICWWalker::get_PageID(BSTR *pbstrPageID)
  95. {
  96. HRESULT hr = E_FAIL;
  97. if (m_pHTMLWalker)
  98. hr = m_pHTMLWalker->get_PageID(pbstrPageID);
  99. return (hr);
  100. }
  101. HRESULT CICWWalker::get_URL(LPTSTR lpszURL, BOOL bForward)
  102. {
  103. HRESULT hr = E_FAIL;
  104. if (m_pHTMLWalker)
  105. hr = m_pHTMLWalker->get_URL(lpszURL, bForward);
  106. return (hr);
  107. }
  108. HRESULT CICWWalker::get_IeakIspFile(LPTSTR lpszIspFile)
  109. {
  110. ASSERT(m_pHTMLWalker);
  111. m_pHTMLWalker->get_IeakIspFile(lpszIspFile);
  112. return S_OK;
  113. }
  114. HRESULT CICWWalker::ProcessOLSFile(IWebBrowser2* lpWebBrowser)
  115. {
  116. ASSERT(m_pHTMLWalker);
  117. m_pHTMLWalker->ProcessOLSFile(lpWebBrowser);
  118. return S_OK;
  119. }
  120. HRESULT CICWWalker::get_FirstFormQueryString(LPTSTR lpszQuery)
  121. {
  122. HRESULT hr = E_FAIL;
  123. if (m_pHTMLWalker)
  124. hr = m_pHTMLWalker->get_FirstFormQueryString(lpszQuery);
  125. return (hr);
  126. }
  127. //+----------------------------------------------------------------------------
  128. //
  129. // Function CICWWalker::QueryInterface
  130. //
  131. // Synopsis This is the standard QI, with support for
  132. // IID_Unknown, ...
  133. //
  134. //
  135. //-----------------------------------------------------------------------------
  136. HRESULT CICWWalker::QueryInterface
  137. (
  138. REFIID riid, void** ppv
  139. )
  140. {
  141. TraceMsg(TF_CWEBVIEW, "CICWWalker::QueryInterface");
  142. if (ppv == NULL)
  143. return(E_INVALIDARG);
  144. *ppv = NULL;
  145. // IID_IICWWalker
  146. if (IID_IICWWalker == riid)
  147. *ppv = (void *)(IICWWalker *)this;
  148. // IID_IUnknown
  149. else if (IID_IUnknown == riid)
  150. *ppv = (void *)this;
  151. else
  152. return(E_NOINTERFACE);
  153. ((LPUNKNOWN)*ppv)->AddRef();
  154. return(S_OK);
  155. }
  156. //+----------------------------------------------------------------------------
  157. //
  158. // Function CICWWalker::AddRef
  159. //
  160. // Synopsis This is the standard AddRef
  161. //
  162. //
  163. //-----------------------------------------------------------------------------
  164. ULONG CICWWalker::AddRef( void )
  165. {
  166. TraceMsg(TF_CWEBVIEW, "CICWWalker::AddRef %d", m_lRefCount + 1);
  167. return InterlockedIncrement(&m_lRefCount) ;
  168. }
  169. //+----------------------------------------------------------------------------
  170. //
  171. // Function CICWWalk::Release
  172. //
  173. // Synopsis This is the standard Release
  174. //
  175. //
  176. //-----------------------------------------------------------------------------
  177. ULONG CICWWalker::Release( void )
  178. {
  179. ASSERT( m_lRefCount > 0 );
  180. InterlockedDecrement(&m_lRefCount);
  181. TraceMsg(TF_CWEBVIEW, "CICWWalker::Release %d", m_lRefCount);
  182. if( 0 == m_lRefCount )
  183. {
  184. if (NULL != m_pServer)
  185. m_pServer->ObjectsDown();
  186. delete this;
  187. return 0;
  188. }
  189. return( m_lRefCount );
  190. }
  191. //+----------------------------------------------------------------------------
  192. //
  193. // Function CICWWalker::CICWWalker
  194. //
  195. // Synopsis This is the constructor, nothing fancy
  196. //
  197. //-----------------------------------------------------------------------------
  198. CICWWalker::CICWWalker
  199. (
  200. CServer* pServer
  201. )
  202. {
  203. TraceMsg(TF_CWEBVIEW, "CICWWalker constructor called");
  204. m_lRefCount = 0;
  205. // Assign the pointer to the server control object.
  206. m_pServer = pServer;
  207. // Create a new Walker object
  208. m_pHTMLWalker = new CWalker();
  209. }
  210. //+----------------------------------------------------------------------------
  211. //
  212. // Function CICWWalker::~CICWWalker
  213. //
  214. // Synopsis This is the destructor. We want to clean up all the memory
  215. // we allocated in ::Initialize
  216. //
  217. //-----------------------------------------------------------------------------
  218. CICWWalker::~CICWWalker( void )
  219. {
  220. TraceMsg(TF_CWEBVIEW, "CICWWalker destructor called with ref count of %d", m_lRefCount);
  221. if (m_pHTMLWalker)
  222. {
  223. m_pHTMLWalker->Release();
  224. m_pHTMLWalker = NULL;
  225. }
  226. }