[EFL] Do not always return the cached frame name.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Sep 2011 17:54:15 +0000 (17:54 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Sep 2011 17:54:15 +0000 (17:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=66856

Patch by Raphael Kubo da Costa <kubo@profusion.mobi> on 2011-09-13
Reviewed by Antonio Gomes.

When a frame has its parent changed (via adoptNode and appendChild,
for example), the frame name will change, so we need to account for
that case and change the cached name when needed.

This should make fast/frames/iframe-reparenting-unique-name.html pass.

* ewk/ewk_frame.cpp:
(ewk_frame_name_get):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@95033 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/efl/ChangeLog
Source/WebKit/efl/ewk/ewk_frame.cpp

index 58d4b84..dec3849 100755 (executable)
@@ -1,3 +1,19 @@
+2011-09-13  Raphael Kubo da Costa  <kubo@profusion.mobi>
+
+        [EFL] Do not always return the cached frame name.
+        https://bugs.webkit.org/show_bug.cgi?id=66856
+
+        Reviewed by Antonio Gomes.
+
+        When a frame has its parent changed (via adoptNode and appendChild,
+        for example), the frame name will change, so we need to account for
+        that case and change the cached name when needed.
+
+        This should make fast/frames/iframe-reparenting-unique-name.html pass.
+
+        * ewk/ewk_frame.cpp:
+        (ewk_frame_name_get):
+
 2011-09-12  Flavio Ceolin  <flavio.ceolin@profusion.mobi>
 
         Reviewed by Martin Robinson.
index e67fe41..da43440 100644 (file)
@@ -349,17 +349,18 @@ const char *ewk_frame_name_get(const Evas_Object *o)
 {
     EWK_FRAME_SD_GET_OR_RETURN(o, sd, 0);
 
-    if (sd->name)
-        return sd->name;
-
     if (!sd->frame) {
         ERR("could not get name of uninitialized frame.");
         return 0;
     }
 
-    WTF::String s = sd->frame->tree()->uniqueName();
-    WTF::CString cs = s.utf8();
-    sd->name = eina_stringshare_add_length(cs.data(), cs.length());
+    const WTF::String frameName = sd->frame->tree()->uniqueName();
+
+    if ((sd->name) && (sd->name == frameName))
+        return sd->name;
+
+    eina_stringshare_replace_length(&(sd->name), frameName.utf8().data(), frameName.length());
+
     return sd->name;
 }