[epiphany] Move code to get application title from DOM to ephy-dom-utils



commit 4b8da0f21ae7ea5a47dbf4a0afce79b1437c3bf2
Author: Manuel Rego Casasnovas <rego igalia com>
Date:   Mon Feb 25 13:13:59 2013 +0100

    Move code to get application title from DOM to ephy-dom-utils
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694144

 lib/ephy-web-dom-utils.c |   35 +++++++++++++++++++++++++++++++++++
 lib/ephy-web-dom-utils.h |    2 ++
 src/window-commands.c    |   27 +++------------------------
 3 files changed, 40 insertions(+), 24 deletions(-)
---
diff --git a/lib/ephy-web-dom-utils.c b/lib/ephy-web-dom-utils.c
index 40b324b..184cf67 100644
--- a/lib/ephy-web-dom-utils.c
+++ b/lib/ephy-web-dom-utils.c
@@ -96,3 +96,38 @@ ephy_web_dom_utils_has_modified_forms (WebKitDOMDocument *document)
 
   return FALSE;
 }
+
+/**
+ * ephy_web_dom_utils_get_application_title:
+ * @document: the DOM document.
+ *
+ * Returns web application title if it is defined in &lt;meta&gt; elements of
+ * @document.
+ **/
+char *
+ephy_web_dom_utils_get_application_title (WebKitDOMDocument *document)
+{
+  WebKitDOMNodeList *metas;
+  char *title = NULL;
+  gulong length, i;
+
+  metas = webkit_dom_document_get_elements_by_tag_name (document, "meta");
+  length = webkit_dom_node_list_get_length (metas);
+
+  for (i = 0; i < length && title == NULL; i++) {
+    char *name;
+    char *property;
+    WebKitDOMNode *node = webkit_dom_node_list_item (metas, i);
+
+    name = webkit_dom_html_meta_element_get_name (WEBKIT_DOM_HTML_META_ELEMENT (node));
+    property = webkit_dom_element_get_attribute (WEBKIT_DOM_ELEMENT (node), "property");
+    if (g_strcmp0 (name, "application-name") == 0
+        || g_strcmp0 (property, "og:site_name") == 0) {
+      title = webkit_dom_html_meta_element_get_content (WEBKIT_DOM_HTML_META_ELEMENT (node));
+    }
+    g_free (property);
+    g_free (name);
+  }
+
+  return title;
+}
diff --git a/lib/ephy-web-dom-utils.h b/lib/ephy-web-dom-utils.h
index f3cde81..d98344c 100644
--- a/lib/ephy-web-dom-utils.h
+++ b/lib/ephy-web-dom-utils.h
@@ -35,6 +35,8 @@ G_BEGIN_DECLS
 
 gboolean ephy_web_dom_utils_has_modified_forms (WebKitDOMDocument *document);
 
+char * ephy_web_dom_utils_get_application_title (WebKitDOMDocument *document);
+
 G_END_DECLS
 
 #endif
diff --git a/src/window-commands.c b/src/window-commands.c
index 7356b83..04b1e29 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -48,6 +48,7 @@
 #include "ephy-shell.h"
 #include "ephy-string.h"
 #include "ephy-web-app-utils.h"
+#include "ephy-web-dom-utils.h"
 #include "ephy-zoom.h"
 #include "pdm-dialog.h"
 
@@ -701,30 +702,8 @@ fill_default_application_title (EphyApplicationDialogData *data)
 #ifdef HAVE_WEBKIT2
        /* TODO: DOM Bindindgs */
 #else
-       WebKitDOMDocument *document;
-       WebKitDOMNodeList *metas;
-       gulong length, i;
-
-       document = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (data->view));
-       metas = webkit_dom_document_get_elements_by_tag_name (document, "meta");
-       length = webkit_dom_node_list_get_length (metas);
-
-       for (i = 0; i < length && title == NULL; i++)
-       {
-               char *name;
-               char *property;
-               WebKitDOMNode *node = webkit_dom_node_list_item (metas, i);
-
-               name = webkit_dom_html_meta_element_get_name (WEBKIT_DOM_HTML_META_ELEMENT (node));
-               property = webkit_dom_element_get_attribute (WEBKIT_DOM_ELEMENT (node), "property");
-               if (g_strcmp0 (name, "application-name") == 0
-                   || g_strcmp0 (property, "og:site_name") == 0)
-               {
-                       title = webkit_dom_html_meta_element_get_content (WEBKIT_DOM_HTML_META_ELEMENT 
(node));
-               }
-               g_free (property);
-               g_free (name);
-       }
+       WebKitDOMDocument *document = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (data->view));
+       title = ephy_web_dom_utils_get_application_title (document);
 #endif
 
        if (title == NULL)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]