Title: [151725] trunk/Source/WebKit2
Revision
151725
Author
[email protected]
Date
2013-06-19 00:24:36 -0700 (Wed, 19 Jun 2013)

Log Message

[GTK] Migrate WebKitFaviconDatabase to GTask
https://bugs.webkit.org/show_bug.cgi?id=117156

Reviewed by Gustavo Noronha Silva.

* UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
(processPendingIconsForPageURL):
(webkit_favicon_database_get_favicon):
(webkit_favicon_database_get_favicon_finish):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (151724 => 151725)


--- trunk/Source/WebKit2/ChangeLog	2013-06-19 07:19:15 UTC (rev 151724)
+++ trunk/Source/WebKit2/ChangeLog	2013-06-19 07:24:36 UTC (rev 151725)
@@ -1,5 +1,17 @@
 2013-06-19  Carlos Garcia Campos  <[email protected]>
 
+        [GTK] Migrate WebKitFaviconDatabase to GTask
+        https://bugs.webkit.org/show_bug.cgi?id=117156
+
+        Reviewed by Gustavo Noronha Silva.
+
+        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
+        (processPendingIconsForPageURL):
+        (webkit_favicon_database_get_favicon):
+        (webkit_favicon_database_get_favicon_finish):
+
+2013-06-19  Carlos Garcia Campos  <[email protected]>
+
         [GTK] Migrate WebKitWebView to GTask
         https://bugs.webkit.org/show_bug.cgi?id=117154
 

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp (151724 => 151725)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp	2013-06-19 07:19:15 UTC (rev 151724)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp	2013-06-19 07:24:36 UTC (rev 151725)
@@ -63,7 +63,7 @@
 
 static guint signals[LAST_SIGNAL] = { 0, };
 
-typedef Vector<GRefPtr<GSimpleAsyncResult> > PendingIconRequestVector;
+typedef Vector<GRefPtr<GTask> > PendingIconRequestVector;
 typedef HashMap<String, PendingIconRequestVector*> PendingIconRequestMap;
 
 struct _WebKitFaviconDatabasePrivate {
@@ -167,18 +167,15 @@
     RefPtr<cairo_surface_t> icon = getIconSurfaceSynchronously(database, pageURL, &error.outPtr());
 
     for (size_t i = 0; i < pendingIconRequests->size(); ++i) {
-        GSimpleAsyncResult* result = pendingIconRequests->at(i).get();
-        GetFaviconSurfaceAsyncData* data = ""
-        if (!g_cancellable_is_cancelled(data->cancellable.get())) {
-            if (error)
-                g_simple_async_result_take_error(result, error.release());
-            else {
-                data->icon = icon;
-                data->shouldReleaseIconForPageURL = false;
-            }
+        GTask* task = pendingIconRequests->at(i).get();
+        if (error)
+            g_task_return_error(task, error.release());
+        else {
+            GetFaviconSurfaceAsyncData* data = ""
+            data->icon = icon;
+            data->shouldReleaseIconForPageURL = false;
+            g_task_return_boolean(task, TRUE);
         }
-
-        g_simple_async_result_complete(result);
     }
     deletePendingIconRequests(database, pendingIconRequests, pageURL);
 }
@@ -238,28 +235,6 @@
     return icons;
 }
 
-static void setErrorForAsyncResult(GSimpleAsyncResult* result, WebKitFaviconDatabaseError error, const String& pageURL = String())
-{
-    ASSERT(result);
-
-    switch (error) {
-    case WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED:
-        g_simple_async_result_set_error(result, WEBKIT_FAVICON_DATABASE_ERROR, error, _("Favicons database not initialized yet"));
-        break;
-
-    case WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND:
-        g_simple_async_result_set_error(result, WEBKIT_FAVICON_DATABASE_ERROR, error, _("Page %s does not have a favicon"), pageURL.utf8().data());
-        break;
-
-    case WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN:
-        g_simple_async_result_set_error(result, WEBKIT_FAVICON_DATABASE_ERROR, error, _("Unknown favicon for page %s"), pageURL.utf8().data());
-        break;
-
-    default:
-        ASSERT_NOT_REACHED();
-    }
-}
-
 GQuark webkit_favicon_database_error_quark(void)
 {
     return g_quark_from_static_string("WebKitFaviconDatabaseError");
@@ -287,29 +262,27 @@
     g_return_if_fail(WEBKIT_IS_FAVICON_DATABASE(database));
     g_return_if_fail(pageURI);
 
-    GRefPtr<GSimpleAsyncResult> result = adoptGRef(g_simple_async_result_new(G_OBJECT(database), callback, userData, reinterpret_cast<gpointer>(webkit_favicon_database_get_favicon)));
-    g_simple_async_result_set_check_cancellable(result.get(), cancellable);
-
-    GetFaviconSurfaceAsyncData* data = ""
-    g_simple_async_result_set_op_res_gpointer(result.get(), data, reinterpret_cast<GDestroyNotify>(destroyGetFaviconSurfaceAsyncData));
-    data->faviconDatabase = database;
-    data->pageURL = String::fromUTF8(pageURI);
-    data->cancellable = cancellable;
-
     WebKitFaviconDatabasePrivate* priv = database->priv;
     WebIconDatabase* iconDatabaseImpl = priv->iconDatabase.get();
     if (!iconDatabaseImpl->isOpen()) {
-        setErrorForAsyncResult(result.get(), WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED);
-        g_simple_async_result_complete_in_idle(result.get());
+        g_task_report_new_error(database, callback, userData, 0,
+            WEBKIT_FAVICON_DATABASE_ERROR, WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED, _("Favicons database not initialized yet"));
         return;
     }
 
-    if (data->pageURL.isEmpty() || data->pageURL.startsWith("about:")) {
-        setErrorForAsyncResult(result.get(), WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND, data->pageURL);
-        g_simple_async_result_complete_in_idle(result.get());
+    if (g_str_has_prefix(pageURI, "about:")) {
+        g_task_report_new_error(database, callback, userData, 0,
+            WEBKIT_FAVICON_DATABASE_ERROR, WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND, _("Page %s does not have a favicon"), pageURI);
         return;
     }
 
+    GRefPtr<GTask> task = adoptGRef(g_task_new(database, cancellable, callback, userData));
+
+    GetFaviconSurfaceAsyncData* data = ""
+    data->faviconDatabase = database;
+    data->pageURL = String::fromUTF8(pageURI);
+    g_task_set_task_data(task.get(), data, reinterpret_cast<GDestroyNotify>(destroyGetFaviconSurfaceAsyncData));
+
     priv->iconDatabase->retainIconForPageURL(data->pageURL);
 
     // We ask for the icon directly. If we don't get the icon data now,
@@ -317,7 +290,7 @@
     GOwnPtr<GError> error;
     data->icon = getIconSurfaceSynchronously(database, data->pageURL, &error.outPtr());
     if (data->icon) {
-        g_simple_async_result_complete_in_idle(result.get());
+        g_task_return_boolean(task.get(), TRUE);
         return;
     }
 
@@ -325,8 +298,7 @@
     data->shouldReleaseIconForPageURL = true;
 
     if (g_error_matches(error.get(), WEBKIT_FAVICON_DATABASE_ERROR, WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND)) {
-        g_simple_async_result_take_error(result.get(), error.release());
-        g_simple_async_result_complete_in_idle(result.get());
+        g_task_return_error(task.get(), error.release());
         return;
     }
 
@@ -337,14 +309,14 @@
     String iconURLForPageURL;
     iconDatabaseImpl->synchronousIconURLForPageURL(data->pageURL, iconURLForPageURL);
     if (!iconURLForPageURL.isEmpty() || !iconDatabaseImpl->isUrlImportCompleted()) {
-        PendingIconRequestVector* icons = getOrCreatePendingIconRequests(database, data->pageURL);
-        ASSERT(icons);
-        icons->append(result);
+        PendingIconRequestVector* iconRequests = getOrCreatePendingIconRequests(database, data->pageURL);
+        ASSERT(iconRequests);
+        iconRequests->append(task);
         return;
     }
 
-    setErrorForAsyncResult(result.get(), WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN, data->pageURL);
-    g_simple_async_result_complete_in_idle(result.get());
+    g_task_return_new_error(task.get(), WEBKIT_FAVICON_DATABASE_ERROR, WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN,
+        _("Unknown favicon for page %s"), pageURI);
 }
 
 /**
@@ -360,14 +332,14 @@
  */
 cairo_surface_t* webkit_favicon_database_get_favicon_finish(WebKitFaviconDatabase* database, GAsyncResult* result, GError** error)
 {
-    GSimpleAsyncResult* simpleResult = G_SIMPLE_ASYNC_RESULT(result);
-    g_warn_if_fail(g_simple_async_result_get_source_tag(simpleResult) == webkit_favicon_database_get_favicon);
+    g_return_val_if_fail(WEBKIT_IS_FAVICON_DATABASE(database), 0);
+    g_return_val_if_fail(g_task_is_valid(result, database), 0);
 
-    if (g_simple_async_result_propagate_error(simpleResult, error))
+    GTask* task = G_TASK(result);
+    if (!g_task_propagate_boolean(task, error))
         return 0;
 
-    GetFaviconSurfaceAsyncData* data = ""
-    ASSERT(data);
+    GetFaviconSurfaceAsyncData* data = ""
     return cairo_surface_reference(data->icon.get());
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to