Title: [133317] trunk
Revision
133317
Author
commit-qu...@webkit.org
Date
2012-11-02 11:05:42 -0700 (Fri, 02 Nov 2012)

Log Message

[GTK] Remove dependency on SoupPasswordManager
https://bugs.webkit.org/show_bug.cgi?id=100775

Patch by Martin Robinson <mrobin...@igalia.com> on 2012-11-02
Reviewed by Carlos Garcia Campos.

.:

Add a libsecret dependency to the build. This is necessary so that we can remove
a dependency on SoupPasswordManager.

* configure.ac: Look for libsecret using the pkg-config configuration macro.

Source/WebCore:

Remember passwords using libsecret instead of SoupPasswordManager. We accomplish this using
a new class, CredentialBackingStore. CredentialBackingStore will soon be the thing that backs
CredentialStoreGtk. The name is based on the name of a similar class from the BlackBerry port.

No new tests. This does not change behavior.

* GNUmakefile.am: Add libsecret flags to the build and the new directory to the include list.
* GNUmakefile.list.am: Add new files to the source list.
* platform/gtk/GRefPtrGtk.cpp: Add support for SecretValue to GRefPtrGtk.
* platform/gtk/GtkAuthenticationDialog.cpp: Replace interaction with SoupPasswordManger with
interaction with the CredentialBackingStore. Remove all conditional SoupPasswordManager guards.
* platform/gtk/GtkAuthenticationDialog.h: Ditto.
* platform/network/gtk/CredentialBackingStore.cpp: Added.
* platform/network/gtk/CredentialBackingStore.h: Added.

Source/WebKit/gtk:

Add a libsecret dependency to the build. This is necessary so that we can remove
a dependency on SoupPasswordManager.

* GNUmakefile.am: Use libsecret libs during WebKit1 library compilation.

Source/WebKit2:

Add a libsecret dependency to the build. This is necessary so that we can remove
a dependency on SoupPasswordManager.

* GNUmakefile.am: Add libsecret CFLAGS to the WebKit2 build.

Modified Paths

Added Paths

Diff

Modified: trunk/ChangeLog (133316 => 133317)


--- trunk/ChangeLog	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/ChangeLog	2012-11-02 18:05:42 UTC (rev 133317)
@@ -1,3 +1,15 @@
+2012-11-02  Martin Robinson  <mrobin...@igalia.com>
+
+        [GTK] Remove dependency on SoupPasswordManager
+        https://bugs.webkit.org/show_bug.cgi?id=100775
+
+        Reviewed by Carlos Garcia Campos.
+
+        Add a libsecret dependency to the build. This is necessary so that we can remove
+        a dependency on SoupPasswordManager.
+
+        * configure.ac: Look for libsecret using the pkg-config configuration macro.
+
 2012-11-02  Michael BrĂ¼ning  <michael.brun...@digia.com>
 
         [Qt][WK2] ASSERT hit for every mouse click

Modified: trunk/Source/WebCore/ChangeLog (133316 => 133317)


--- trunk/Source/WebCore/ChangeLog	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebCore/ChangeLog	2012-11-02 18:05:42 UTC (rev 133317)
@@ -1,3 +1,25 @@
+2012-11-02  Martin Robinson  <mrobin...@igalia.com>
+
+        [GTK] Remove dependency on SoupPasswordManager
+        https://bugs.webkit.org/show_bug.cgi?id=100775
+
+        Reviewed by Carlos Garcia Campos.
+
+        Remember passwords using libsecret instead of SoupPasswordManager. We accomplish this using
+        a new class, CredentialBackingStore. CredentialBackingStore will soon be the thing that backs
+        CredentialStoreGtk. The name is based on the name of a similar class from the BlackBerry port.
+
+        No new tests. This does not change behavior.
+
+        * GNUmakefile.am: Add libsecret flags to the build and the new directory to the include list.
+        * GNUmakefile.list.am: Add new files to the source list.
+        * platform/gtk/GRefPtrGtk.cpp: Add support for SecretValue to GRefPtrGtk.
+        * platform/gtk/GtkAuthenticationDialog.cpp: Replace interaction with SoupPasswordManger with
+        interaction with the CredentialBackingStore. Remove all conditional SoupPasswordManager guards.
+        * platform/gtk/GtkAuthenticationDialog.h: Ditto.
+        * platform/network/gtk/CredentialBackingStore.cpp: Added.
+        * platform/network/gtk/CredentialBackingStore.h: Added.
+
 2012-11-02  Jinwoo Song  <jinwoo7.s...@samsung.com>
 
         Fix build warning [-Wswitch]

Modified: trunk/Source/WebCore/GNUmakefile.am (133316 => 133317)


--- trunk/Source/WebCore/GNUmakefile.am	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebCore/GNUmakefile.am	2012-11-02 18:05:42 UTC (rev 133317)
@@ -73,6 +73,7 @@
 	-I$(srcdir)/Source/WebCore/platform/mediastream/gstreamer \
 	-I$(srcdir)/Source/WebCore/platform/mock \
 	-I$(srcdir)/Source/WebCore/platform/network \
+	-I$(srcdir)/Source/WebCore/platform/network/gtk \
 	-I$(srcdir)/Source/WebCore/platform/sql \
 	-I$(srcdir)/Source/WebCore/platform/text \
 	-I$(srcdir)/Source/WebCore/platform/text/transcoder \
@@ -641,6 +642,7 @@
 	$(GEOCLUE_CFLAGS) \
 	$(GLIB_CFLAGS) \
 	$(GSTREAMER_CFLAGS) \
+	$(LIBSECRET_CFLAGS) \
 	$(LIBSOUP_CFLAGS) \
 	$(LIBXML_CFLAGS) \
 	$(LIBXSLT_CFLAGS) \
@@ -704,6 +706,7 @@
 	$(GSTREAMER_CFLAGS) \
 	$(GTK_CFLAGS) \
 	$(HILDON_CFLAGS) \
+	$(LIBSECRET_CFLAGS) \
 	$(LIBSOUP_CFLAGS) \
 	$(LIBXML_CFLAGS) \
 	$(LIBXSLT_CFLAGS) \

Modified: trunk/Source/WebCore/GNUmakefile.list.am (133316 => 133317)


--- trunk/Source/WebCore/GNUmakefile.list.am	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebCore/GNUmakefile.list.am	2012-11-02 18:05:42 UTC (rev 133317)
@@ -4748,6 +4748,8 @@
 	Source/WebCore/platform/network/SocketStreamHandleBase.cpp \
 	Source/WebCore/platform/network/SocketStreamHandleBase.h \
 	Source/WebCore/platform/network/SocketStreamHandleClient.h \
+	Source/WebCore/platform/network/gtk/CredentialBackingStore.cpp \
+	Source/WebCore/platform/network/gtk/CredentialBackingStore.h \
 	Source/WebCore/platform/network/soup/AuthenticationChallenge.h \
 	Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp \
 	Source/WebCore/platform/network/soup/CookieJarSoup.cpp \

Modified: trunk/Source/WebCore/platform/gtk/GRefPtrGtk.cpp (133316 => 133317)


--- trunk/Source/WebCore/platform/gtk/GRefPtrGtk.cpp	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebCore/platform/gtk/GRefPtrGtk.cpp	2012-11-02 18:05:42 UTC (rev 133317)
@@ -20,8 +20,12 @@
 #include "config.h"
 #include "GRefPtrGtk.h"
 
+#define SECRET_WITH_UNSTABLE 1
+#define SECRET_API_SUBJECT_TO_CHANGE 1
+
 #include <glib.h>
 #include <gtk/gtk.h>
+#include <libsecret/secret.h>
 
 namespace WTF {
 
@@ -38,6 +42,19 @@
         gtk_target_list_unref(ptr);
 }
 
+template <> SecretValue* refGPtr(SecretValue* ptr)
+{
+    if (ptr)
+        secret_value_ref(ptr);
+    return ptr;
+}
+
+template <> void derefGPtr(SecretValue* ptr)
+{
+    if (ptr)
+        secret_value_unref(ptr);
+}
+
 #ifdef GTK_API_VERSION_2
 template <> GdkCursor* refGPtr(GdkCursor* ptr)
 {

Modified: trunk/Source/WebCore/platform/gtk/GRefPtrGtk.h (133316 => 133317)


--- trunk/Source/WebCore/platform/gtk/GRefPtrGtk.h	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebCore/platform/gtk/GRefPtrGtk.h	2012-11-02 18:05:42 UTC (rev 133317)
@@ -23,11 +23,16 @@
 
 #include <wtf/gobject/GRefPtr.h>
 
+typedef struct _SecretValue SecretValue;
+
 namespace WTF {
 
 template <> GtkTargetList* refGPtr(GtkTargetList* ptr);
 template <> void derefGPtr(GtkTargetList* ptr);
 
+template <> SecretValue* refGPtr(SecretValue* ptr);
+template <> void derefGPtr(SecretValue* ptr);
+
 #ifdef GTK_API_VERSION_2
 template <> GdkCursor* refGPtr(GdkCursor* ptr);
 template <> void derefGPtr(GdkCursor* ptr);

Modified: trunk/Source/WebCore/platform/gtk/GtkAuthenticationDialog.cpp (133316 => 133317)


--- trunk/Source/WebCore/platform/gtk/GtkAuthenticationDialog.cpp	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebCore/platform/gtk/GtkAuthenticationDialog.cpp	2012-11-02 18:05:42 UTC (rev 133317)
@@ -20,6 +20,8 @@
 #include "config.h"
 #include "GtkAuthenticationDialog.h"
 
+#include "AuthenticationChallenge.h"
+#include "CredentialBackingStore.h"
 #include "GtkVersioning.h"
 #include <glib/gi18n-lib.h>
 #include <gtk/gtk.h>
@@ -54,15 +56,6 @@
     return entry;
 }
 
-static bool sessionCanSavePasswords(SoupSession* session)
-{
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
-    return soup_session_get_feature(session, SOUP_TYPE_PASSWORD_MANAGER);
-#else
-    return false;
-#endif
-}
-
 GtkAuthenticationDialog::~GtkAuthenticationDialog()
 {
 }
@@ -75,10 +68,8 @@
     , m_loginEntry(0)
     , m_passwordEntry(0)
     , m_rememberCheckButton(0)
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
     , m_isSavingPassword(false)
     , m_savePasswordHandler(0)
-#endif
 {
     GtkDialog* dialog = GTK_DIALOG(m_dialog);
     gtk_dialog_add_buttons(dialog, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
@@ -187,47 +178,32 @@
 
     gtk_entry_set_visibility(GTK_ENTRY(m_passwordEntry), FALSE);
 
-    if (sessionCanSavePasswords(m_session)) {
 #ifdef GTK_API_VERSION_2
-        GtkWidget* rememberBox = gtk_vbox_new(FALSE, 6);
+    GtkWidget* rememberBox = gtk_vbox_new(FALSE, 6);
 #else
-        GtkWidget* rememberBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
+    GtkWidget* rememberBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
 #endif
-        gtk_box_pack_start(GTK_BOX(vBox), rememberBox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(vBox), rememberBox, FALSE, FALSE, 0);
 
-        m_rememberCheckButton = gtk_check_button_new_with_mnemonic(_("_Remember password"));
-        gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(m_rememberCheckButton))), TRUE);
-        gtk_box_pack_start(GTK_BOX(rememberBox), m_rememberCheckButton, FALSE, FALSE, 0);
-    }
+    m_rememberCheckButton = gtk_check_button_new_with_mnemonic(_("_Remember password"));
+    gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(m_rememberCheckButton))), TRUE);
+    gtk_box_pack_start(GTK_BOX(rememberBox), m_rememberCheckButton, FALSE, FALSE, 0);
 }
 
-static bool getSavedLogin(SoupAuth* auth, const char** username, const char** password)
-{
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
-    GSList* users = soup_auth_get_saved_users(auth);
-    if (!users)
-        return false;
-
-    *username = static_cast<char*>(users->data);
-    *password = soup_auth_get_saved_password(auth, *username);
-    g_slist_free(users);
-
-    return *username && *password;
-#else
-    return false;
-#endif
-}
-
 void GtkAuthenticationDialog::show()
 {
-    const char* username = 0;
-    const char* password = 0;
-    bool haveSavedLogin = getSavedLogin(m_auth.get(), &username, &password);
     soup_session_pause_message(m_session, m_message.get());
-    gtk_entry_set_text(GTK_ENTRY(m_loginEntry), username ? username : "");
-    gtk_entry_set_text(GTK_ENTRY(m_passwordEntry), password ? password : "");
-    if (m_rememberCheckButton && haveSavedLogin)
+
+    // This is just a temporary kludge until GtkAuthenticationDialog works directly with AuthenticationChallenges.
+    // See http://wkbug.com/99914
+    AuthenticationChallenge challenge(0 /* session */, m_message.get(), m_auth.get(), false, 0);
+    Credential savedCredential = credentialBackingStore().credentialForChallenge(challenge);
+    if (!savedCredential.isEmpty()) {
+        gtk_entry_set_text(GTK_ENTRY(m_loginEntry), savedCredential.user().utf8().data());
+        gtk_entry_set_text(GTK_ENTRY(m_passwordEntry), savedCredential.password().utf8().data());
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_rememberCheckButton), TRUE);
+    }
+
     g_signal_connect(m_dialog, "response", G_CALLBACK(authenticationDialogResponseCallback), this);
     gtk_widget_show_all(m_dialog);
 }
@@ -239,9 +215,7 @@
     soup_session_unpause_message(m_session, m_message.get());
     gtk_widget_destroy(m_dialog);
 
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
     shouldDelete = !m_isSavingPassword;
-#endif
 
     // Do not delete the object if it's still saving the password,
     // the save password callback will delete it.
@@ -249,7 +223,6 @@
         delete this;
 }
 
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
 void GtkAuthenticationDialog::savePasswordCallback(SoupMessage* message, GtkAuthenticationDialog* dialog)
 {
     dialog->savePassword();
@@ -261,8 +234,16 @@
     ASSERT(!m_password.isNull());
 
     // Anything but 401 and 5xx means the password was accepted.
-    if (m_message.get()->status_code != 401 && m_message.get()->status_code < 500)
-        soup_auth_save_password(m_auth.get(), m_username.data(), m_password.data());
+    if (m_message.get()->status_code != 401 && m_message.get()->status_code < 500) {
+        // This is just a temporary kludge until GtkAuthenticationDialog works directly with AuthenticationChallenges.
+        // See http://wkbug.com/99914
+        AuthenticationChallenge challenge(0 /* session */, m_message.get(), m_auth.get(), false, 0);
+        Credential credentialToSave = Credential(
+            String::fromUTF8(m_username.data()),
+            String::fromUTF8(m_password.data()),
+            CredentialPersistencePermanent);
+        credentialBackingStore().storeCredentialsForChallenge(challenge, credentialToSave);
+    }
 
     // Disconnect the callback. If the authentication succeeded we are done,
     // and if it failed we'll create a new GtkAuthenticationDialog and we'll
@@ -272,7 +253,6 @@
     // Dialog has been already destroyed, after saving the password it should be deleted.
     delete this;
 }
-#endif
 
 void GtkAuthenticationDialog::authenticate()
 {
@@ -280,14 +260,12 @@
     const char *password = gtk_entry_get_text(GTK_ENTRY(m_passwordEntry));
     soup_auth_authenticate(m_auth.get(), username, password);
 
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
     if (m_rememberCheckButton && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_rememberCheckButton))) {
         m_username = username;
         m_password = password;
         m_isSavingPassword = true;
         m_savePasswordHandler = g_signal_connect(m_message.get(), "got-headers", G_CALLBACK(savePasswordCallback), this);
     }
-#endif
 }
 
 void GtkAuthenticationDialog::authenticationDialogResponseCallback(GtkWidget*, gint responseID, GtkAuthenticationDialog* dialog)

Modified: trunk/Source/WebCore/platform/gtk/GtkAuthenticationDialog.h (133316 => 133317)


--- trunk/Source/WebCore/platform/gtk/GtkAuthenticationDialog.h	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebCore/platform/gtk/GtkAuthenticationDialog.h	2012-11-02 18:05:42 UTC (rev 133317)
@@ -20,8 +20,6 @@
 #ifndef GtkAuthenticationDialog_h
 #define GtkAuthenticationDialog_h
 
-#define LIBSOUP_I_HAVE_READ_BUG_594377_AND_KNOW_SOUP_PASSWORD_MANAGER_MIGHT_GO_AWAY
-
 #include <wtf/gobject/GOwnPtr.h>
 #include "GRefPtrGtk.h"
 #include <libsoup/soup.h>
@@ -44,12 +42,8 @@
 private:
     void destroy();
     void authenticate();
-
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
     void savePassword();
     static void savePasswordCallback(SoupMessage*, GtkAuthenticationDialog*);
-#endif
-
     static void authenticationDialogResponseCallback(GtkWidget*, gint responseID, GtkAuthenticationDialog*);
 
     GtkWidget* m_dialog;
@@ -61,12 +55,10 @@
     GtkWidget* m_passwordEntry;
     GtkWidget* m_rememberCheckButton;
 
-#ifdef SOUP_TYPE_PASSWORD_MANAGER
     bool m_isSavingPassword;
     unsigned long m_savePasswordHandler;
     CString m_username;
     CString m_password;
-#endif
 };
 
 } // namespace WebCore

Added: trunk/Source/WebCore/platform/network/gtk/CredentialBackingStore.cpp (0 => 133317)


--- trunk/Source/WebCore/platform/network/gtk/CredentialBackingStore.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/network/gtk/CredentialBackingStore.cpp	2012-11-02 18:05:42 UTC (rev 133317)
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY IGALIA S.L. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CredentialBackingStore.h"
+
+#define SECRET_WITH_UNSTABLE 1
+#define SECRET_API_SUBJECT_TO_CHANGE 1
+#include "AuthenticationChallenge.h"
+#include "GRefPtrGtk.h"
+#include <glib/gi18n-lib.h>
+#include <libsecret/secret.h>
+#include <libsoup/soup.h>
+#include <wtf/gobject/GOwnPtr.h>
+#include <wtf/text/CString.h>
+
+namespace WebCore {
+
+CredentialBackingStore& credentialBackingStore()
+{
+    DEFINE_STATIC_LOCAL(CredentialBackingStore, backingStore, ());
+    return backingStore;
+}
+
+static GRefPtr<GHashTable> createAttributeHashTableFromChallenge(const AuthenticationChallenge& challenge, const Credential& credential = Credential())
+{
+    SoupURI* uri = soup_message_get_uri(challenge.soupMessage());
+    GRefPtr<GHashTable> attributes = adoptGRef(secret_attributes_build(
+        SECRET_SCHEMA_COMPAT_NETWORK,
+        "domain", soup_auth_get_realm(challenge.soupAuth()),
+        "server", uri->host,
+        "protocol", uri->scheme,
+        "authtype", soup_auth_get_scheme_name(challenge.soupAuth()),
+        "port", uri->port,
+        NULL));
+    if (credential.isEmpty())
+        return attributes;
+
+    g_hash_table_insert(attributes.get(), g_strdup("user"), g_strdup(credential.user().utf8().data()));
+    return attributes;
+}
+
+Credential CredentialBackingStore::credentialForChallenge(const AuthenticationChallenge& challenge)
+{
+    GOwnPtr<GList> elements(secret_service_search_sync(
+        0, // The default SecretService.
+        SECRET_SCHEMA_COMPAT_NETWORK,
+        createAttributeHashTableFromChallenge(challenge).get(),
+        static_cast<SecretSearchFlags>(SECRET_SEARCH_UNLOCK | SECRET_SEARCH_LOAD_SECRETS), // The default behavior is to only return the most recent item.
+        0, // cancellable
+        0)); // error
+    if (!elements || !elements->data)
+        return Credential();
+
+    GRefPtr<SecretItem> secretItem = adoptGRef(static_cast<SecretItem*>(elements->data));
+    GRefPtr<GHashTable> attributes = adoptGRef(secret_item_get_attributes(secretItem.get()));
+    String user = String::fromUTF8(static_cast<const char*>(g_hash_table_lookup(attributes.get(), "user")));
+    if (user.isEmpty())
+        return Credential();
+
+    size_t length;
+    GRefPtr<SecretValue> secretValue = adoptGRef(secret_item_get_secret(secretItem.get()));
+    const char* passwordData = secret_value_get(secretValue.get(), &length);
+    String password = String::fromUTF8(passwordData, length);
+
+    return Credential(user, password, CredentialPersistencePermanent);
+}
+
+void CredentialBackingStore::storeCredentialsForChallenge(const AuthenticationChallenge& challenge, const Credential& credential)
+{
+    CString utf8Password = credential.password().utf8();
+    GRefPtr<SecretValue> newSecretValue = adoptGRef(secret_value_new(utf8Password.data(), utf8Password.length(), "text/plain"));
+
+    secret_service_store(
+        0, // The default SecretService.
+        SECRET_SCHEMA_COMPAT_NETWORK,
+        createAttributeHashTableFromChallenge(challenge, credential).get(),
+        SECRET_COLLECTION_DEFAULT,
+        _("WebKitGTK+ password"),
+        newSecretValue.get(),
+        0, // cancellable
+        0, // callback
+        0); // data
+}
+
+} // namespace WebCore

Added: trunk/Source/WebCore/platform/network/gtk/CredentialBackingStore.h (0 => 133317)


--- trunk/Source/WebCore/platform/network/gtk/CredentialBackingStore.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/network/gtk/CredentialBackingStore.h	2012-11-02 18:05:42 UTC (rev 133317)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY IGALIA S.L. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CredentialBackingStore_h
+#define CredentialBackingStore_h
+
+#include "Credential.h"
+
+namespace WebCore {
+
+class AuthenticationChallenge;
+
+class CredentialBackingStore {
+WTF_MAKE_NONCOPYABLE(CredentialBackingStore);
+public:
+    friend CredentialBackingStore& credentialBackingStore();
+    virtual ~CredentialBackingStore() { }
+
+    Credential credentialForChallenge(const AuthenticationChallenge&);
+    void storeCredentialsForChallenge(const AuthenticationChallenge&, const Credential&);
+
+private:
+    CredentialBackingStore() { }
+};
+
+CredentialBackingStore& credentialBackingStore();
+
+} // namespace WebCore
+
+#endif // CredentialBackingStore_h

Modified: trunk/Source/WebKit/gtk/ChangeLog (133316 => 133317)


--- trunk/Source/WebKit/gtk/ChangeLog	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebKit/gtk/ChangeLog	2012-11-02 18:05:42 UTC (rev 133317)
@@ -1,3 +1,15 @@
+2012-11-02  Martin Robinson  <mrobin...@igalia.com>
+
+        [GTK] Remove dependency on SoupPasswordManager
+        https://bugs.webkit.org/show_bug.cgi?id=100775
+
+        Reviewed by Carlos Garcia Campos.
+
+        Add a libsecret dependency to the build. This is necessary so that we can remove
+        a dependency on SoupPasswordManager.
+
+        * GNUmakefile.am: Use libsecret libs during WebKit1 library compilation.
+
 2012-10-24  Brady Eidson  <beid...@apple.com>
 
         Add a strategy for loader customization.

Modified: trunk/Source/WebKit/gtk/GNUmakefile.am (133316 => 133317)


--- trunk/Source/WebKit/gtk/GNUmakefile.am	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebKit/gtk/GNUmakefile.am	2012-11-02 18:05:42 UTC (rev 133317)
@@ -95,6 +95,7 @@
 	$(GSTREAMER_LIBS) \
 	$(GTK_LIBS) \
 	$(JPEG_LIBS) \
+	$(LIBSECRET_LIBS) \
 	$(LIBSOUP_LIBS) \
 	$(LIBXML_LIBS) \
 	$(LIBXSLT_LIBS) \

Modified: trunk/Source/WebKit2/ChangeLog (133316 => 133317)


--- trunk/Source/WebKit2/ChangeLog	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebKit2/ChangeLog	2012-11-02 18:05:42 UTC (rev 133317)
@@ -1,3 +1,15 @@
+2012-11-02  Martin Robinson  <mrobin...@igalia.com>
+
+        [GTK] Remove dependency on SoupPasswordManager
+        https://bugs.webkit.org/show_bug.cgi?id=100775
+
+        Reviewed by Carlos Garcia Campos.
+
+        Add a libsecret dependency to the build. This is necessary so that we can remove
+        a dependency on SoupPasswordManager.
+
+        * GNUmakefile.am: Add libsecret CFLAGS to the WebKit2 build.
+
 2012-11-02  Byungwoo Lee  <bw80....@samsung.com>
 
         [EFL][WK2] Change the scope of locking in WorkQueueEfl.cpp.

Modified: trunk/Source/WebKit2/GNUmakefile.am (133316 => 133317)


--- trunk/Source/WebKit2/GNUmakefile.am	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/Source/WebKit2/GNUmakefile.am	2012-11-02 18:05:42 UTC (rev 133317)
@@ -175,6 +175,7 @@
 	$(GTK_LIBS) \
 	$(GTK_UNIX_PRINTING_LIBS) \
 	$(JPEG_LIBS) \
+	$(LIBSECRET_LIBS) \
 	$(LIBSOUP_LIBS) \
 	$(LIBXML_LIBS) \
 	$(LIBXSLT_LIBS) \
@@ -458,6 +459,7 @@
 	$(GLIB_CFLAGS) \
 	$(GSTREAMER_CFLAGS) \
 	$(GTK2_CFLAGS) \
+	$(LIBSECRET_CFLAGS) \
 	$(LIBSOUP_CFLAGS) \
 	$(LIBXML_CFLAGS) \
 	$(LIBXSLT_CFLAGS) \

Modified: trunk/configure.ac (133316 => 133317)


--- trunk/configure.ac	2012-11-02 17:57:43 UTC (rev 133316)
+++ trunk/configure.ac	2012-11-02 18:05:42 UTC (rev 133317)
@@ -962,6 +962,10 @@
 AC_SUBST([LIBSOUP_CFLAGS])
 AC_SUBST([LIBSOUP_LIBS])
 
+PKG_CHECK_MODULES([LIBSECRET], [libsecret-1])
+AC_SUBST([LIBSECRET_CFLAGS])
+AC_SUBST([LIBSECRET_LIBS])
+
 # check if FreeType/FontConfig are available
 if test "$with_font_backend" = "freetype"; then
    if test "$with_target" = "directfb"; then
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to