Bug 454284 - Remove EmbedPasswordMgr.cpp from mozilla-central. r=bs

This commit is contained in:
Justin Dolske 2008-09-19 08:35:22 -07:00
parent cc8c1ff2e3
commit 262a2b5c00
6 changed files with 0 additions and 2498 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,227 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 tw=80 et cindent: */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Password Manager.
*
* The Initial Developer of the Original Code is
* Brian Ryner.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Brian Ryner <bryner@brianryner.com>
* Changes: romaxa@gmail.com (from original: mozilla/toolkit/components/passwordmgr/base/nsPasswordManager.h)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsCPasswordManager.h"
#include "nsClassHashtable.h"
#include "nsDataHashtable.h"
#include "nsCOMPtr.h"
#include "nsIObserver.h"
#include "nsWeakReference.h"
#include "nsIFormSubmitObserver.h"
#include "nsIWebProgressListener.h"
#include "nsIDOMFocusListener.h"
#include "nsIDOMLoadListener.h"
#include "nsIStringBundle.h"
#include "nsIPrefBranch.h"
#include "nsIPromptFactory.h"
#include "nsIAuthPromptWrapper.h"
#include "nsCOMPtr.h"
#include "nsIPrompt.h"
#include "nsIAuthPrompt2.h"
#include "EmbedPrivate.h"
#define EMBED_PASSWORDMANAGER_DESCRIPTION "MicroB PSM Dialog Impl"
/* 360565c4-2ef3-4f6a-bab9-94cca891b2a7 */
#define EMBED_PASSWORDMANAGER_CID \
{0x360565c4, 0x2ef3, 0x4f6a, {0xba, 0xb9, 0x94, 0xcc, 0xa8, 0x91, 0xb2, 0xa7}}
class nsIFile;
class nsIStringBundle;
class nsIComponentManager;
class nsIContent;
class nsIDOMWindowInternal;
class nsIURI;
class nsIDOMHTMLInputElement;
class nsIDOMWindow;
class nsIPromptService2;
struct nsModuleComponentInfo;
class EmbedPasswordMgr : public nsIPasswordManager,
public nsIPasswordManagerInternal,
public nsIObserver,
public nsIFormSubmitObserver,
public nsIWebProgressListener,
public nsIDOMFocusListener,
public nsIPromptFactory,
public nsIDOMLoadListener,
public nsSupportsWeakReference
{
public:
class SignonDataEntry;
class SignonHashEntry;
class PasswordEntry;
EmbedPasswordMgr();
virtual ~EmbedPasswordMgr();
static EmbedPasswordMgr* GetInstance();
static EmbedPasswordMgr* GetInstance(EmbedPrivate *aOwner);
nsresult Init();
static PRBool SingleSignonEnabled();
static NS_METHOD Register(nsIComponentManager* aCompMgr,
nsIFile* aPath,
const char* aRegistryLocation,
const char* aComponentType,
const nsModuleComponentInfo* aInfo);
static NS_METHOD Unregister(nsIComponentManager* aCompMgr,
nsIFile* aPath,
const char* aRegistryLocation,
const nsModuleComponentInfo* aInfo);
static void Shutdown();
static void GetLocalizedString(const nsAString& key,
nsAString& aResult,
PRBool aFormatted = PR_FALSE,
const PRUnichar** aFormatArgs = nsnull,
PRUint32 aFormatArgsLength = 0);
static nsresult DecryptData(const nsAString& aData, nsAString& aPlaintext);
static nsresult EncryptData(const nsAString& aPlaintext,
nsACString& aEncrypted);
static nsresult EncryptDataUCS2(const nsAString& aPlaintext,
nsAString& aEncrypted);
nsresult InsertLogin(const char* username, const char* password = nsnull);
nsresult RemovePasswords(const char *aHostName, const char *aUserName);
nsresult RemovePasswordsByIndex(PRUint32 aIndex);
nsresult IsEqualToLastHostQuery(nsCString& aHost);
NS_DECL_ISUPPORTS
NS_DECL_NSIPASSWORDMANAGER
NS_DECL_NSIPASSWORDMANAGERINTERNAL
NS_DECL_NSIOBSERVER
NS_DECL_NSIWEBPROGRESSLISTENER
NS_DECL_NSIPROMPTFACTORY
// nsIFormSubmitObserver
NS_IMETHOD Notify(nsIDOMHTMLFormElement* aDOMForm,
nsIDOMWindowInternal* aWindow,
nsIURI* aActionURL,
PRBool* aCancelSubmit);
// nsIDOMFocusListener
NS_IMETHOD Focus(nsIDOMEvent* aEvent);
NS_IMETHOD Blur(nsIDOMEvent* aEvent);
// nsIDOMEventListener
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
// nsIDOMLoadListener
NS_IMETHOD Load(nsIDOMEvent* aEvent);
NS_IMETHOD Unload(nsIDOMEvent* aEvent);
NS_IMETHOD BeforeUnload(nsIDOMEvent* aEvent);
NS_IMETHOD Abort(nsIDOMEvent* aEvent);
NS_IMETHOD Error(nsIDOMEvent* aEvent);
protected:
void WritePasswords(nsIFile* aPasswordFile);
void AddSignonData(const nsACString& aRealm, SignonDataEntry* aEntry);
nsresult FindPasswordEntryInternal(const SignonDataEntry* aEntry,
const nsAString& aUser,
const nsAString& aPassword,
const nsAString& aUserField,
SignonDataEntry** aResult);
nsresult FillPassword(nsIDOMEvent* aEvent = nsnull);
void AttachToInput(nsIDOMHTMLInputElement* aElement);
PRBool GetPasswordRealm(nsIURI* aURI, nsACString& aRealm);
static PLDHashOperator PR_CALLBACK FindEntryEnumerator(const nsACString& aKey,
SignonHashEntry* aEntry,
void* aUserData);
static PLDHashOperator PR_CALLBACK WriteRejectEntryEnumerator(const nsACString& aKey,
PRInt32 aEntry,
void* aUserData);
static PLDHashOperator PR_CALLBACK WriteSignonEntryEnumerator(const nsACString& aKey,
SignonHashEntry* aEntry,
void* aUserData);
static PLDHashOperator PR_CALLBACK BuildArrayEnumerator(const nsACString& aKey,
SignonHashEntry* aEntry,
void* aUserData);
static PLDHashOperator PR_CALLBACK BuildRejectArrayEnumerator(const nsACString& aKey,
PRInt32 aEntry,
void* aUserData);
static PLDHashOperator PR_CALLBACK RemoveForDOMDocumentEnumerator(nsISupports* aKey,
PRInt32& aEntry,
void* aUserData);
static void EnsureDecoderRing();
nsClassHashtable<nsCStringHashKey,SignonHashEntry> mSignonTable;
nsDataHashtable<nsCStringHashKey,PRInt32> mRejectTable;
nsDataHashtable<nsISupportsHashKey,PRInt32> mAutoCompleteInputs;
nsCOMPtr<nsIFile> mSignonFile;
nsCOMPtr<nsIPrefBranch> mPrefBranch;
nsIDOMHTMLInputElement* mAutoCompletingField;
nsIDOMHTMLInputElement* mGlobalUserField;
nsIDOMHTMLInputElement* mGlobalPassField;
SignonHashEntry * mLastSignonHashEntry;
int lastIndex;
nsCAutoString mLastHostQuery;
EmbedCommon* mCommonObject;
public:
PRBool mFormAttachCount;
// nsAString mLastHostQuery;
};
/* 1baf3398-f759-4a72-a21f-0abdc9cc9960 */
#define NS_SINGLE_SIGNON_PROMPT_CID \
{0x1baf3398, 0xf759, 0x4a72, {0xa2, 0x1f, 0x0a, 0xbd, 0xc9, 0xcc, 0x99, 0x60}}
// Our wrapper for username/password prompts - this allows us to prefill
// the password dialog and add a "remember this password" checkbox.
class EmbedSignonPrompt : public nsIAuthPromptWrapper
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIAUTHPROMPT
NS_DECL_NSIAUTHPROMPTWRAPPER
EmbedSignonPrompt() {}
virtual ~EmbedSignonPrompt() {}
protected:
void GetLocalizedString(const nsAString& aKey, nsAString& aResult);
nsCOMPtr<nsIPrompt> mPrompt;
};
// A wrapper for the newer nsIAuthPrompt2 interface
// Its purpose is the same as nsSingleSignonPrompt, but wraps an nsIDOMWindow
// instead of an nsIPrompt.
class EmbedSignonPrompt2 : public nsIAuthPrompt2
{
public:
EmbedSignonPrompt2(nsIPromptService2* aService, nsIDOMWindow* aParent);
NS_DECL_ISUPPORTS
NS_DECL_NSIAUTHPROMPT2
private:
~EmbedSignonPrompt2();
nsCOMPtr<nsIPromptService2> mService;
nsCOMPtr<nsIDOMWindow> mParent;
};

View File

@ -47,11 +47,6 @@
#include "EmbedPrivate.h"
#include "EmbedWindow.h"
#ifdef MOZ_GTKPASSWORD_INTERFACE
#include "EmbedPasswordMgr.h"
#include "nsIPassword.h"
#endif
#include "EmbedGlobalHistory.h"
//#include "EmbedDownloadMgr.h"
// so we can do our get_nsIWebBrowser later...
@ -389,72 +384,6 @@ gtk_moz_embed_common_save_prefs()
return NS_SUCCEEDED(rv);
}
gint
gtk_moz_embed_common_get_logins(const char* uri, GList **list)
{
gint ret = 0;
#ifdef MOZ_GTKPASSWORD_INTERFACE
EmbedPasswordMgr *passwordManager = EmbedPasswordMgr::GetInstance();
nsCOMPtr<nsISimpleEnumerator> passwordEnumerator;
nsresult result = passwordManager->GetEnumerator(getter_AddRefs(passwordEnumerator));
PRBool enumResult;
for (passwordEnumerator->HasMoreElements(&enumResult) ;
enumResult == PR_TRUE ;
passwordEnumerator->HasMoreElements(&enumResult))
{
nsCOMPtr<nsIPassword> nsPassword;
result = passwordEnumerator->GetNext(getter_AddRefs(nsPassword));
if (NS_FAILED(result)) {
/* this almost certainly leaks logins */
return ret;
}
nsCString host;
nsPassword->GetHost(host);
nsCString nsCURI(uri);
if (uri) {
if (!StringBeginsWith(nsCURI, host)
// && !StringBeginsWith(host, nsCURI)
)
continue;
} else if (!passwordManager->IsEqualToLastHostQuery(host))
continue;
if (list) {
nsString unicodeName;
nsString unicodePassword;
nsPassword->GetUser(unicodeName);
nsPassword->GetPassword(unicodePassword);
GtkMozLogin * login = g_new0(GtkMozLogin, 1);
UNACCEPTABLE_CRASHY_GLIB_ALLOCATION(login);
login->user = ToNewUTF8String(unicodeName);
ALLOC_NOT_CHECKED(login->user);
login->pass = ToNewUTF8String(unicodePassword);
ALLOC_NOT_CHECKED(login->pass);
login->host = NS_strdup(host.get());
ALLOC_NOT_CHECKED(login->host);
login->index = ret;
*list = g_list_append(*list, login);
}
ret++;
}
#endif
return ret;
}
gboolean
gtk_moz_embed_common_remove_passwords(const gchar *host, const gchar *user, gint index)
{
#ifdef MOZ_GTKPASSWORD_INTERFACE
EmbedPasswordMgr *passwordManager = EmbedPasswordMgr::GetInstance();
if (index >= 0) {
passwordManager->RemovePasswordsByIndex(index);
} else {
passwordManager->RemovePasswords(host, user);
}
#endif
return TRUE;
}
gint
gtk_moz_embed_common_get_history_list(GtkMozHistoryItem **GtkHI)
{

View File

@ -182,8 +182,6 @@ GTKMOZEMBED_API(gboolean, gtk_moz_embed_common_set_pref, (GtkType typ
GTKMOZEMBED_API(gboolean, gtk_moz_embed_common_get_pref, (GtkType type, gchar*, gpointer))
GTKMOZEMBED_API(gboolean, gtk_moz_embed_common_save_prefs, (void))
GTKMOZEMBED_API(gboolean, gtk_moz_embed_common_login, (GtkWidget *embed, const gchar* username))
GTKMOZEMBED_API(gboolean, gtk_moz_embed_common_remove_passwords, (const gchar *host, const gchar *user, gint index))
GTKMOZEMBED_API(gint, gtk_moz_embed_common_get_logins, (const char* uri, GList **list))
GTKMOZEMBED_API(gint, gtk_moz_embed_common_get_history_list, (GtkMozHistoryItem **GtkHI))
GTKMOZEMBED_API(gint, gtk_moz_embed_common_remove_history, (gchar *url, gint time))
GTKMOZEMBED_API(GSList*, gtk_moz_embed_common_get_cookie_list, (void))

View File

@ -1,79 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications, Inc.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
[scriptable, uuid(CF39C2B0-1E4B-11d5-A549-0010A401EB10)]
/**
* An optional interface for clients wishing to access a
* password object
*
* @status FROZEN
*/
interface nsIPassword : nsISupports {
/**
* the name of the host corresponding to the login being saved
*
* The form of the host depends on how the nsIPassword object was created
*
* - if it was created as a result of submitting a form to a site, then the
* host is the url of the site, as obtained from a call to GetSpec
*
* - if it was created as a result of another app (e.g., mailnews) calling a
* prompt routine such at PromptUsernameAndPassword, then the host is whatever
* arbitrary string the app decided to pass in.
*
* Whatever form it is in, it will be used by the password manager to uniquely
* identify the login realm, so that "newsserver:119" is not the same thing as
* "newsserver".
*/
readonly attribute AUTF8String host;
/**
* the user name portion of the login
*/
readonly attribute AString user;
/**
* the password portion of the login
*/
readonly attribute AString password;
};

View File

@ -1,57 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Google Inc.
* Portions created by the Initial Developer are Copyright (C) 2005
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Darin Fisher <darin@meer.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsIPassword.idl"
/**
* This interface is supported by password manager entries to expose the
* fieldnames passed to nsIPasswordManagerInternal's addUserFull method.
*/
[scriptable, uuid(2cc35c67-978f-42a9-a958-16e97ad2f4c8)]
interface nsIPasswordInternal : nsIPassword
{
/**
* The name of the field that contained the username.
*/
readonly attribute AString userFieldName;
/**
* The name of the field that contained the password.
*/
readonly attribute AString passwordFieldName;
};