Exemplo n.º 1
0
void IEToolbar::createToolbarWindow() {
  toolbarWindow_.create(siteWindow_);

  // Load and assign images for toolbar's buttons.
  setupToolbarImages();
  setupToolbarHotImages();

  // Create all toolbar elements.
  createToolbarItems();

  // Store toolbar reference for 
  RuntimeContext::storeToolbar(*this);

  // subscribe for https responces tracking
  CComPtr<IInternetSession> session;
  CoInternetGetSession(0, &session, 0);
  SessionMetaFactory::CreateInstance(CLSID_HttpSProtocol, 
    &httpsFactory_, siteWindow_.m_hWnd);
  session->RegisterNameSpace(httpsFactory_, CLSID_NULL, L"https", 0, 0, 0);

  // subscribe for http responces tracking
  SessionMetaFactory::CreateInstance(CLSID_HttpProtocol, 
    &httpFactory_, siteWindow_.m_hWnd);
  session->RegisterNameSpace(httpFactory_, CLSID_NULL, L"http", 0, 0, 0);

  // Switch toolbar to appropriate state.
  if (UserDataObserver::getInstance().isLoggedIn()) {
    loggedIn();
  } else {
    loggedOut();
  }
}
HRESULT CProtocolHandlerRegistrar::RegisterTemporaryHandler(
  LPCWSTR lpszScheme,
  LPCWSTR lpszHost,
  RT      tResourceID)
{
  CritSectLock lock(m_CriticalSection);
  BOOL registered = FALSE;

  CComObject<CF> *pHandlerFactory = NULL;
  CComPtr<IClassFactory> pClassFactory;

  // lookup class factory for lpszScheme
  if (!m_ClassFactories.Lookup(lpszScheme, pClassFactory))
  {
    // don't have yet, create class factory object
    IF_FAILED_RET(CComObject<CF>
      ::CreateInstance(&pHandlerFactory));

    pClassFactory = pHandlerFactory;

    // init classfactory object
    IF_FAILED_RET(pHandlerFactory->Init(
      lpszScheme));
  }
  else
  {
    // have class factory
    registered = TRUE;
    pHandlerFactory = (CComObject<CF> *)pClassFactory.p;
  }

  // add the host
  IF_FAILED_RET(pHandlerFactory->AddHost(
    lpszHost, tResourceID));

  // register protocol handler
  if (!registered)
  {
    // get IInternetSession
    CComPtr<IInternetSession> pInternetSession;
    IF_FAILED_RET(CoInternetGetSession(0, &pInternetSession, 0));

    IF_FAILED_RET(pInternetSession->RegisterNameSpace(
      pClassFactory,
      CTemporaryProtocolFolderHandler::CLSID,
      lpszScheme,
      0, NULL, 0));

    // store classfactory object
    m_ClassFactories[lpszScheme] = pClassFactory;
  }

  return S_OK;
}
Exemplo n.º 3
0
void sunapp_register_classes() {
	HRESULT hr;
	hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
	if (FAILED(hr))
		alert("CoInitialize failed");

	IInternetSession* iis;
	hr = CoInternetGetSession(0, &iis, 0);
	if (FAILED(hr))
		alert("CoInternetGetSession failed");
	else {
		iis->RegisterNameSpace(&factory, CLSID_SuneidoAPP, L"suneido", 0, 0, 0);
		iis->Release();
	}
}
Exemplo n.º 4
0
//--------------------------------------------------------------------------
// registerProtocolInternal
HRESULT Application::registerProtocolInternal(Scheme aScheme)
{
  CComPtr<IInternetSession> internetSession;
  HRESULT hr = CoInternetGetSession(0, &internetSession, 0);
  if (FAILED(hr)) {
    return hr;
  }

  switch(aScheme) {
    case SCHEME_HTTP:
      hr = MetaFactoryProtocol::CreateInstance(
          SchemeTraits<SCHEME_HTTP>::getCLSID(),
          &mClassFactoryHTTP);

      if (SUCCEEDED(hr)) {
        hr = internetSession->RegisterNameSpace(
          mClassFactoryHTTP,
          CLSID_NULL,
          SchemeTraits<SCHEME_HTTP>::getSchemeName(),
          0, 0, 0);
      }
      break;
    case SCHEME_HTTP_S:
      hr = MetaFactoryProtocol::CreateInstance(
          SchemeTraits<SCHEME_HTTP_S>::getCLSID(),
          &mClassFactoryHTTPS);

      if (SUCCEEDED(hr)) {
        hr = internetSession->RegisterNameSpace(
          mClassFactoryHTTPS,
          CLSID_NULL,
          SchemeTraits<SCHEME_HTTP_S>::getSchemeName(),
          0, 0, 0);
      }
      break;
    default:
      return E_INVALIDARG;
  }
  if (FAILED(hr)) {
    return hr;
  }
  return S_OK;
}
Exemplo n.º 5
0
//--------------------------------------------------------------------------
// unregisterProtocolInternal
HRESULT Application::unregisterProtocolInternal(Scheme aScheme)
{
  if (PAPP != mHandlerType) {
    return E_UNEXPECTED;
  }
  CComPtr<IInternetSession> internetSession;
  HRESULT hr = CoInternetGetSession(0, &internetSession, 0);
  if (FAILED(hr)) {
    return hr;
  }

  switch(aScheme) {
    case SCHEME_HTTP:
      internetSession->UnregisterNameSpace(mClassFactoryHTTP, SchemeTraits<SCHEME_HTTP>::getSchemeName());
      mClassFactoryHTTP.Release();
      return S_OK;
    case SCHEME_HTTP_S:
      internetSession->UnregisterNameSpace(mClassFactoryHTTPS, SchemeTraits<SCHEME_HTTP_S>::getSchemeName());
      mClassFactoryHTTPS.Release();
      return S_OK;
  }
  return E_INVALIDARG;
}
HRESULT CProtocolHandlerRegistrar::UnregisterTemporaryHandler(
  LPCWSTR lpszScheme,
  LPCWSTR lpszHost)
{
  CritSectLock lock(m_CriticalSection);
  // lookup classfactory object for lpszHost
  CComPtr<IClassFactory> pClassFactory;
  if (!m_ClassFactories.Lookup(lpszScheme, pClassFactory))
  {
    // not found
    return S_FALSE;
  }

  // unregister host
  CComObject<CF> * pHandlerFactory = (CComObject<CF> *)pClassFactory.p;
  size_t registeredHosts = pHandlerFactory->RemoveHost(lpszHost);
  if (registeredHosts > 0)
  {
    // the handler has still registered hosts
    return S_OK;
  }

  // there are no more registered hosts, so remove the registration

  // get IInternetSession
  CComPtr<IInternetSession> pInternetSession;
  IF_FAILED_RET(CoInternetGetSession(0, &pInternetSession, 0));

  // unregister
  pInternetSession->UnregisterNameSpace(pClassFactory,
      lpszScheme);

  // and remove from map
  m_ClassFactories.RemoveKey(lpszScheme);

  return S_OK;
}