Skip to content

Commit

Permalink
Add IProvideClassInfo interface (demanded by WinCC Runtime Profession…
Browse files Browse the repository at this point in the history
…al) / Exclude some There client specific code
  • Loading branch information
datadiode committed Sep 24, 2023
1 parent 4864f63 commit f382d62
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 7 deletions.
20 changes: 20 additions & 0 deletions BrowserProxy/BrowserProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,16 +134,20 @@ BrowserProxyModule::BrowserProxyModule():
m_view(),
m_newWindowDeferral(),
m_newWindowArgs(),
#ifdef THERE
m_voiceTrainerProxy(),
m_settingsRequestHandler(),
#endif
m_navigationStartingToken(),
m_navigationCompletedToken(),
m_newWindowRequestedToken(),
m_sourceChangedToken(),
m_historyChangedToken(),
m_documentTitleChangedToken(),
#ifdef THERE
m_webResourceRequestedToken(),
m_webMessageReceivedToken(),
#endif
m_windowCloseRequestedToken(),
m_domContentLoadedToken(),
m_downloadStartingToken(),
Expand All @@ -163,8 +167,10 @@ BrowserProxyModule::~BrowserProxyModule()
m_view->remove_SourceChanged(m_sourceChangedToken);
m_view->remove_HistoryChanged(m_historyChangedToken);
m_view->remove_DocumentTitleChanged(m_documentTitleChangedToken);
#ifdef THERE
m_view->remove_WebResourceRequested(m_webResourceRequestedToken);
m_view->remove_WebMessageReceived(m_webMessageReceivedToken);
#endif
m_view->remove_WindowCloseRequested(m_windowCloseRequestedToken);
m_view->remove_DOMContentLoaded(m_domContentLoadedToken);
m_view->remove_DownloadStarting(m_downloadStartingToken);
Expand All @@ -173,6 +179,7 @@ BrowserProxyModule::~BrowserProxyModule()
if (m_controller != nullptr)
m_controller->Close();

#ifdef THERE
if (m_voiceTrainerProxy != nullptr)
{
m_voiceTrainerProxy->Close();
Expand All @@ -181,6 +188,7 @@ BrowserProxyModule::~BrowserProxyModule()

if (m_settingsRequestHandler != nullptr)
m_settingsRequestHandler.Release();
#endif
}

HRESULT STDMETHODCALLTYPE BrowserProxyModule::SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
Expand Down Expand Up @@ -398,7 +406,9 @@ HRESULT STDMETHODCALLTYPE BrowserProxyModule::GoHome()
if (m_view == nullptr)
return E_NOT_VALID_STATE;

#ifdef THERE
m_url = L"https://webapps.prod.there.com/therecentral/there_central.xml?fromClient=1";
#endif

if (FAILED(Navigate()))
return E_FAIL;
Expand Down Expand Up @@ -565,7 +575,9 @@ HRESULT STDMETHODCALLTYPE BrowserProxyModule::Invoke(HRESULT errorCode, ICoreWeb
m_controller->put_RasterizationScale(1.0);
m_controller->put_IsVisible(m_visible);

#ifdef THERE
m_view->AddWebResourceRequestedFilter(L"https://webapps.prod.there.com/*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT);
#endif

m_view->add_NavigationStarting(Callback<ICoreWebView2NavigationStartingEventHandler>(
[this](ICoreWebView2 *sender, ICoreWebView2NavigationStartingEventArgs *args) -> HRESULT
Expand Down Expand Up @@ -609,6 +621,7 @@ HRESULT STDMETHODCALLTYPE BrowserProxyModule::Invoke(HRESULT errorCode, ICoreWeb
}
).Get(), &m_documentTitleChangedToken);

#ifdef THERE
m_view->add_WebResourceRequested(Callback<ICoreWebView2WebResourceRequestedEventHandler>(
[this](ICoreWebView2 *sender, ICoreWebView2WebResourceRequestedEventArgs *args) -> HRESULT
{
Expand All @@ -622,6 +635,7 @@ HRESULT STDMETHODCALLTYPE BrowserProxyModule::Invoke(HRESULT errorCode, ICoreWeb
return OnWebMessageReceived(sender, args);
}
).Get(), &m_webMessageReceivedToken);
#endif

m_view->add_WindowCloseRequested(Callback<ICoreWebView2WindowCloseRequestedEventHandler>(
[this](ICoreWebView2 *sender, IUnknown *args) -> HRESULT
Expand Down Expand Up @@ -694,6 +708,7 @@ HRESULT BrowserProxyModule::OnNavigationStarting(ICoreWebView2 *sender, ICoreWe

settings->put_IsWebMessageEnabled(false);

#ifdef THERE
if (m_voiceTrainerProxy != nullptr)
{
m_voiceTrainerProxy->Close();
Expand All @@ -702,13 +717,15 @@ HRESULT BrowserProxyModule::OnNavigationStarting(ICoreWebView2 *sender, ICoreWe

if (m_settingsRequestHandler != nullptr)
m_settingsRequestHandler.Release();
#endif

if (vcancel != VARIANT_FALSE)
{
args->put_Cancel(true);
return S_OK;
}

#ifdef THERE
if (VoiceTrainerProxy::Validate(m_url))
{
CComPtr<VoiceTrainerProxy> voiceTrainerProxy(new VoiceTrainerProxy());
Expand All @@ -728,6 +745,7 @@ HRESULT BrowserProxyModule::OnNavigationStarting(ICoreWebView2 *sender, ICoreWe
settings->put_IsWebMessageEnabled(true);
}
}
#endif

return S_OK;
}
Expand Down Expand Up @@ -921,6 +939,7 @@ HRESULT BrowserProxyModule::OnDocumentTitleChanged(ICoreWebView2 *sender)
return S_OK;
}

#ifdef THERE
HRESULT BrowserProxyModule::OnWebResourceRequested(ICoreWebView2 *sender, ICoreWebView2WebResourceRequestedEventArgs *args)
{
if (sender == nullptr || args == nullptr)
Expand Down Expand Up @@ -1032,6 +1051,7 @@ HRESULT BrowserProxyModule::OnWebMessageReceived(ICoreWebView2 *sender, ICoreWeb

return S_OK;
}
#endif

HRESULT BrowserProxyModule::OnWindowCloseRequested(ICoreWebView2 *sender)
{
Expand Down
11 changes: 10 additions & 1 deletion BrowserProxy/BrowserProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ class BrowserProxyModule: public CComObjectRootEx<CComSingleThreadModel>,
public IPersistStorageImpl<BrowserProxyModule>,
public IPersistStreamInitImpl<BrowserProxyModule>,
public ISupportErrorInfoImpl<&IID_IThereEdgeWebBrowser>,
public IDispatchImpl<IThereEdgeWebBrowser2, &IID_IThereEdgeWebBrowser2, &LIBID_BrowserProxyLib>,
public IDispatchImpl<IThereEdgeWebBrowser2, &IID_IThereEdgeWebBrowser2, &LIBID_BrowserProxyLib>,
public IProvideClassInfo2Impl<&CLSID_ThereEdgeWebBrowser, &DIID_IThereEdgeWebBrowserEvents2, &LIBID_BrowserProxyLib>,
public CComCoClass<BrowserProxyModule, &CLSID_ThereEdgeWebBrowser>,
public ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler,
public ICoreWebView2CreateCoreWebView2ControllerCompletedHandler
Expand Down Expand Up @@ -113,6 +114,8 @@ class BrowserProxyModule: public CComObjectRootEx<CComSingleThreadModel>,
COM_INTERFACE_ENTRY(IPersistStorage)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY2(IProvideClassInfo, IProvideClassInfo2)
END_COM_MAP()

BEGIN_PROP_MAP(BrowserProxyModule)
Expand Down Expand Up @@ -230,8 +233,10 @@ class BrowserProxyModule: public CComObjectRootEx<CComSingleThreadModel>,
HRESULT OnSourceChanged(ICoreWebView2 *sender, ICoreWebView2SourceChangedEventArgs *args);
HRESULT OnHistoryChanged(ICoreWebView2 *sender);
HRESULT OnDocumentTitleChanged(ICoreWebView2 *sender);
#ifdef THERE
HRESULT OnWebResourceRequested(ICoreWebView2 *sender, ICoreWebView2WebResourceRequestedEventArgs *args);
HRESULT OnWebMessageReceived(ICoreWebView2 *sender, ICoreWebView2WebMessageReceivedEventArgs *args);
#endif
HRESULT OnWindowCloseRequested(ICoreWebView2 *sender);
HRESULT OnDOMContentLoaded(ICoreWebView2 *sender, ICoreWebView2DOMContentLoadedEventArgs *args);
HRESULT OnDownloadStarting(ICoreWebView2 *sender, ICoreWebView2DownloadStartingEventArgs *args);
Expand All @@ -255,16 +260,20 @@ class BrowserProxyModule: public CComObjectRootEx<CComSingleThreadModel>,
CComPtr<ICoreWebView2_4> m_view;
CComPtr<ICoreWebView2Deferral> m_newWindowDeferral;
CComPtr<ICoreWebView2NewWindowRequestedEventArgs> m_newWindowArgs;
#ifdef THERE
CComPtr<VoiceTrainerProxy> m_voiceTrainerProxy;
CComPtr<SettingsRequestHandler> m_settingsRequestHandler;
#endif
EventRegistrationToken m_navigationStartingToken;
EventRegistrationToken m_navigationCompletedToken;
EventRegistrationToken m_newWindowRequestedToken;
EventRegistrationToken m_sourceChangedToken;
EventRegistrationToken m_historyChangedToken;
EventRegistrationToken m_documentTitleChangedToken;
#ifdef THERE
EventRegistrationToken m_webResourceRequestedToken;
EventRegistrationToken m_webMessageReceivedToken;
#endif
EventRegistrationToken m_windowCloseRequestedToken;
EventRegistrationToken m_domContentLoadedToken;
EventRegistrationToken m_downloadStartingToken;
Expand Down
8 changes: 4 additions & 4 deletions BrowserProxy/BrowserProxy.rc
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ END
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,1,2,1
PRODUCTVERSION 1,1,2,1
FILEVERSION 1,1,2,2
PRODUCTVERSION 1,1,2,2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -76,12 +76,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "datadiode"
VALUE "FileDescription", "ActiveX proxy to Edge WebView2"
VALUE "FileVersion", "1.1.2.1"
VALUE "FileVersion", "1.1.2.2"
VALUE "InternalName", "OpennessWebView2.dll"
VALUE "LegalCopyright", "(c) Hmph! et al."
VALUE "OriginalFilename", "OpennessWebView2.dll"
VALUE "ProductName", "OpennessWebView2 Control"
VALUE "ProductVersion", "1.1.2.1"
VALUE "ProductVersion", "1.1.2.2"
END
END
BLOCK "VarFileInfo"
Expand Down
12 changes: 10 additions & 2 deletions BrowserProxy/BrowserProxy.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,16 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">
</PrecompiledHeader>
</ClCompile>
<ClCompile Include="SettingsRequestHandler.cpp" />
<ClCompile Include="VoiceTrainerProxy.cpp" />
<ClCompile Include="SettingsRequestHandler.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="VoiceTrainerProxy.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="BrowserProxy.rc" />
Expand Down

0 comments on commit f382d62

Please sign in to comment.