Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(707)

Unified Diff: goopdate/cred_dialog.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « goopdate/crash_unittest.cc ('k') | goopdate/cred_dialog.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: goopdate/cred_dialog.h
diff --git a/goopdate/cred_dialog.h b/goopdate/cred_dialog.h
deleted file mode 100644
index 531e868cf85f200bc913a1d8aab3a87dbf61a6cf..0000000000000000000000000000000000000000
--- a/goopdate/cred_dialog.h
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2011 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-
-#ifndef OMAHA_GOOPDATE_CRED_DIALOG_H_
-#define OMAHA_GOOPDATE_CRED_DIALOG_H_
-
-#include <atlbase.h>
-#include <atlcom.h>
-#include "goopdate/omaha3_idl.h"
-#include "omaha/base/atlregmapex.h"
-#include "omaha/common/const_goopdate.h"
-#include "omaha/common/goopdate_utils.h"
-#include "omaha/goopdate/com_proxy.h"
-#include "omaha/goopdate/non_localized_resource.h"
-
-namespace omaha {
-
-#pragma warning(push)
-// Construction of local static object is not thread-safe
-#pragma warning(disable:4640)
-
-class ATL_NO_VTABLE CredentialDialogBase
- : public CComObjectRootEx<CComObjectThreadModel>,
- public ICredentialDialog,
- public StdMarshalInfo {
- public:
- explicit CredentialDialogBase(bool is_machine)
- : StdMarshalInfo(is_machine),
- is_machine_(is_machine) {}
-
- BEGIN_COM_MAP(CredentialDialogBase)
- COM_INTERFACE_ENTRY(IStdMarshalInfo)
- COM_INTERFACE_ENTRY(ICredentialDialog)
- END_COM_MAP()
-
- // ICredentialDialog methods.
- STDMETHOD(QueryUserForCredentials)(ULONG_PTR owner_hwnd,
- BSTR server,
- BSTR caption,
- BSTR* username,
- BSTR* password);
-
- protected:
- virtual ~CredentialDialogBase() {}
-
- private:
- bool is_machine_;
-
- static HRESULT DoQueryUserForCredentials(
- HWND hwnd,
- BSTR server,
- BSTR caption,
- BSTR* username,
- BSTR* password);
-
- static DWORD DisplayDialog(
- HWND hwnd,
- LPCTSTR server,
- LPCTSTR message,
- LPCTSTR caption,
- CString* username_out,
- CString* password_out);
-
- DISALLOW_COPY_AND_ASSIGN(CredentialDialogBase);
-};
-
-template <typename T>
-class ATL_NO_VTABLE CredentialDialog
- : public CredentialDialogBase,
- public CComCoClass<CredentialDialog<T> > {
- public:
- CredentialDialog() : CredentialDialogBase(T::is_machine()) {}
-
- DECLARE_NOT_AGGREGATABLE(CredentialDialog);
- DECLARE_REGISTRY_RESOURCEID_EX(T::registry_res_id())
-
- BEGIN_REGISTRY_MAP()
- REGMAP_ENTRY(_T("HKROOT"), T::hk_root())
- REGMAP_ENTRY(_T("VERSION"), _T("1.0"))
- REGMAP_ENTRY(_T("PROGID"), T::prog_id())
- REGMAP_ENTRY(_T("DESCRIPTION"), _T("GoogleUpdate CredentialDialog"))
- REGMAP_ENTRY(_T("CLSID"), T::class_id())
- REGMAP_MODULE2(_T("MODULE"), kOmahaOnDemandFileName)
- END_REGISTRY_MAP()
-
- protected:
- virtual ~CredentialDialog() {}
-
- private:
- DISALLOW_COPY_AND_ASSIGN(CredentialDialog);
-};
-
-
-struct CredentialDialogModeUser {
- static bool is_machine() { return false; }
- static const TCHAR* const prog_id() { return kProgIDCredentialDialogUser; }
- static GUID class_id() { return __uuidof(CredentialDialogUserClass); }
- static UINT registry_res_id() { return IDR_LOCAL_SERVER_RGS; }
- static const TCHAR* const hk_root() { return _T("HKCU"); }
-};
-
-struct CredentialDialogModeMachine {
- static bool is_machine() { return true; }
- static const TCHAR* const prog_id() { return kProgIDCredentialDialogMachine; }
- static GUID class_id() { return __uuidof(CredentialDialogMachineClass); }
- static UINT registry_res_id() { return IDR_LOCAL_SERVER_RGS; }
- static const TCHAR* const hk_root() { return _T("HKLM"); }
-};
-
-typedef CredentialDialog<CredentialDialogModeUser> CredentialDialogUser;
-typedef CredentialDialog<CredentialDialogModeMachine> CredentialDialogMachine;
-
-// A static function that decides whether to display the dialog in-process
-// or launch an out-of-process COM server for showing it, and automatically
-// handles BSTR/CString conversion.
-inline HRESULT LaunchCredentialDialog(
- bool is_machine,
- HWND owner_hwnd,
- const CString& server,
- const CString& caption,
- CString* username_out,
- CString* password_out) {
- ASSERT1(username_out);
- ASSERT1(password_out);
-
- CAccessToken access_token;
- if (!access_token.GetThreadToken(TOKEN_READ)) {
- // If this thread is currently impersonating a user, that's perfect, as the
- // COM server will be started under that user. If not, verify that the
- // process isn't running as LocalSystem/LocalService - we cannot show UI
- // in that scenario without impersonating.
- bool is_system = true;
- HRESULT hr = IsSystemProcess(&is_system);
- if (FAILED(hr)) {
- CORE_LOG(LE, (_T("[CredDialog][IsSystemProcess failed][0x%08x]"), hr));
- return hr;
- }
- if (is_system) {
- CORE_LOG(LE, (_T("[CredDialog][Process running as SYSTEM - aborting]")));
- return E_ABORT;
- }
- }
-
- CComPtr<ICredentialDialog> dialog;
- REFCLSID clsid = is_machine ? __uuidof(CredentialDialogMachineClass) :
- __uuidof(CredentialDialogUserClass);
- HRESULT hr = dialog.CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER);
- if (FAILED(hr)) {
- CORE_LOG(LE, (_T("[LaunchCredentialDialog][CoCreate failed][0x%08x]"), hr));
- return hr;
- }
-
- CComBSTR server_bstr(server);
- CComBSTR caption_bstr(caption);
- CComBSTR username_bstr;
- CComBSTR password_bstr;
- hr = dialog->QueryUserForCredentials(reinterpret_cast<ULONG_PTR>(owner_hwnd),
- server_bstr,
- caption_bstr,
- &username_bstr,
- &password_bstr);
-
- if (SUCCEEDED(hr)) {
- username_out->SetString(username_bstr);
- password_out->SetString(password_bstr);
- }
- ::SecureZeroMemory(username_bstr.m_str, username_bstr.ByteLength());
- ::SecureZeroMemory(password_bstr.m_str, password_bstr.ByteLength());
-
- return hr;
-}
-
-#pragma warning(pop)
-
-} // namespace omaha
-
-#endif // OMAHA_GOOPDATE_CRED_DIALOG_H_
-
« no previous file with comments | « goopdate/crash_unittest.cc ('k') | goopdate/cred_dialog.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698