[Gtk]: DRT does not support frame flattening testing
authortonikitoo@webkit.org <tonikitoo@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 17 Oct 2010 03:51:48 +0000 (03:51 +0000)
committertonikitoo@webkit.org <tonikitoo@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 17 Oct 2010 03:51:48 +0000 (03:51 +0000)
https://bugs.webkit.org/show_bug.cgi?id=38650

Reviewed by Martin Robinson and Xan Lopez.
Patch by Antonio Gomes <agomes@rim.com>

WebKit/gtk:

Implement enable-frame-flattening API for Gtk+.

* webkit/webkitwebsettings.cpp:
(webkit_web_settings_class_init):
(webkit_web_settings_set_property):
(webkit_web_settings_get_property):
(webkit_web_settings_copy):
* webkit/webkitwebview.cpp:
(webkit_web_view_update_settings):
(webkit_web_view_settings_notify):

WebKitTools:

Implement DRT's support for toggling on/off frame flattening
support.

* DumpRenderTree/gtk/DumpRenderTree.cpp:
(resetDefaultsToConsistentValues):
* DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
(LayoutTestController::setFrameFlatteningEnabled):

LayoutTests:

Unskipping passing frame flattening tests and adding expected results
for them.

* platform/gtk/Skipped:

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

18 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/gtk/Skipped
LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-grid-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-simple-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-subframe-resize-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-subframesets-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-height-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-and-height-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-and-height-no-scrolling-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-offscreen-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-simple-expected.txt [new file with mode: 0644]
WebKit/gtk/ChangeLog
WebKit/gtk/webkit/webkitwebsettings.cpp
WebKit/gtk/webkit/webkitwebview.cpp
WebKitTools/ChangeLog
WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp
WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp

index 920e78a..0c1d187 100644 (file)
@@ -1,3 +1,15 @@
+2010-10-14  Antonio Gomes  <agomes@rim.com>
+
+        Reviewed by Martin Robinson and Xan Lopez.
+
+        [Gtk]: DRT does not support frame flattening testing
+        https://bugs.webkit.org/show_bug.cgi?id=38650
+
+        Unskipping passing frame flattening tests and added expected results
+        for them.
+
+        * platform/gtk/Skipped:
+
 2010-10-16  Alex Milowski  <alex@milowski.com>
 
         Reviewed by Daniel Bates.
index e3379e8..6720930 100644 (file)
@@ -5204,10 +5204,6 @@ scrollbars/scrollbar-middleclick-nopaste.html
 # Relies on WebKit API [WebView _loadBackForwardListFromOtherView:]
 fast/loader/crash-copying-backforwardlist.html
 
-# Skip frame flattening tests until it can be tested by this DRT (bug 32717)
-# https://bugs.webkit.org/show_bug.cgi?id=38650
-fast/frames/flattening/
-
 # https://bugs.webkit.org/show_bug.cgi?id=47587
 fast/events/spatial-navigation/snav-iframe-flattening-simple.html
 
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-grid-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-grid-expected.txt
new file mode 100644 (file)
index 0000000..424027e
--- /dev/null
@@ -0,0 +1,52 @@
+layer at (0,0) size 1200x800
+  RenderView at (0,0) size 784x584
+layer at (0,0) size 1200x800
+  RenderBlock {HTML} at (0,0) size 784x800
+    RenderFrameSet {FRAMESET} at (0,0) size 1200x800
+      RenderFrame {FRAME} at (0,0) size 600x200
+        layer at (0,0) size 600x200
+          RenderView at (0,0) size 600x200
+        layer at (0,0) size 600x200
+          RenderBlock {HTML} at (0,0) size 600x200
+            RenderBody {BODY} at (8,8) size 584x176 [bgcolor=#008000]
+              RenderBlock {P} at (0,0) size 584x19
+                RenderText {#text} at (0,0) size 416x19
+                  text run at (0,0) width 416: "Test for frameset flattening. The flattening only works inside the DRT."
+              RenderBlock {P} at (0,35) size 584x19
+                RenderText {#text} at (0,0) size 506x19
+                  text run at (0,0) width 506: "This frame should be 300px wide, 200px tall and not be scrollable (have scrollbars)."
+        layer at (0,0) size 300x200
+          RenderBlock (positioned) {DIV} at (0,0) size 300x200
+      RenderFrame {FRAME} at (600,0) size 600x200
+        layer at (0,0) size 600x200
+          RenderView at (0,0) size 600x200
+        layer at (0,0) size 600x200
+          RenderBlock {HTML} at (0,0) size 600x200
+            RenderBody {BODY} at (8,8) size 584x176 [bgcolor=#FF0000]
+              RenderBlock {P} at (0,0) size 584x19
+                RenderText {#text} at (0,0) size 506x19
+                  text run at (0,0) width 506: "This frame should be 300px wide, 200px tall and not be scrollable (have scrollbars)."
+        layer at (0,0) size 300x50
+          RenderBlock (positioned) {DIV} at (0,0) size 300x50
+      RenderFrame {FRAME} at (0,200) size 600x600
+        layer at (0,0) size 600x600
+          RenderView at (0,0) size 600x600
+        layer at (0,0) size 600x600
+          RenderBlock {HTML} at (0,0) size 600x600
+            RenderBody {BODY} at (8,8) size 584x576 [bgcolor=#FFFF00]
+              RenderBlock {P} at (0,0) size 584x19
+                RenderText {#text} at (0,0) size 506x19
+                  text run at (0,0) width 506: "This frame should be 600px wide, 600px tall and not be scrollable (have scrollbars)."
+        layer at (0,0) size 600x600
+          RenderBlock (positioned) {DIV} at (0,0) size 600x600
+      RenderFrame {FRAME} at (600,200) size 600x600
+        layer at (0,0) size 600x600
+          RenderView at (0,0) size 600x600
+        layer at (0,0) size 600x600
+          RenderBlock {HTML} at (0,0) size 600x600
+            RenderBody {BODY} at (8,8) size 584x576 [bgcolor=#0000FF]
+              RenderBlock {P} at (0,0) size 584x19
+                RenderText {#text} at (0,0) size 506x19
+                  text run at (0,0) width 506: "This frame should be 600px wide, 600px tall and not be scrollable (have scrollbars)."
+        layer at (0,0) size 600x600
+          RenderBlock (positioned) {DIV} at (0,0) size 600x600
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-simple-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-simple-expected.txt
new file mode 100644 (file)
index 0000000..2f57498
--- /dev/null
@@ -0,0 +1,25 @@
+layer at (0,0) size 1000x584
+  RenderView at (0,0) size 800x584
+layer at (0,0) size 1000x584
+  RenderBlock {HTML} at (0,0) size 800x584
+    RenderFrameSet {FRAMESET} at (0,0) size 1000x584
+      RenderFrame {FRAME} at (0,0) size 800x584
+        layer at (0,0) size 800x584
+          RenderView at (0,0) size 800x584
+        layer at (0,0) size 800x584
+          RenderBlock {HTML} at (0,0) size 800x584
+            RenderBody {BODY} at (8,8) size 784x560 [bgcolor=#008000]
+              RenderBlock {P} at (0,0) size 784x19
+                RenderText {#text} at (0,0) size 416x19
+                  text run at (0,0) width 416: "Test for frameset flattening. The flattening only works inside the DRT."
+              RenderBlock {P} at (0,35) size 784x19
+                RenderText {#text} at (0,0) size 438x19
+                  text run at (0,0) width 438: "This frame should be 800px wide and not be scrollable (have scrollbars)."
+        layer at (0,100) size 800x1
+          RenderBlock (positioned) {DIV} at (0,100) size 800x1
+      RenderFrame {FRAME} at (800,0) size 200x584
+        layer at (0,0) size 200x584
+          RenderView at (0,0) size 200x584
+        layer at (0,0) size 200x584
+          RenderBlock {HTML} at (0,0) size 200x584
+            RenderBody {BODY} at (8,8) size 184x568
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-subframe-resize-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-subframe-resize-expected.txt
new file mode 100644 (file)
index 0000000..45f77fc
--- /dev/null
@@ -0,0 +1,27 @@
+layer at (0,0) size 1000x650
+  RenderView at (0,0) size 784x584
+layer at (0,0) size 1000x650
+  RenderBlock {HTML} at (0,0) size 784x650
+    RenderFrameSet {FRAMESET} at (0,0) size 1000x650
+      RenderFrame {FRAME} at (0,0) size 300x650
+        layer at (0,0) size 300x650
+          RenderView at (0,0) size 300x650
+        layer at (0,0) size 300x650
+          RenderBlock {HTML} at (0,0) size 300x650
+            RenderBody {BODY} at (8,8) size 284x626 [bgcolor=#008000]
+              RenderBlock {P} at (0,0) size 284x38
+                RenderText {#text} at (0,0) size 276x38
+                  text run at (0,0) width 276: "Test for frameset flattening. The flattening only"
+                  text run at (0,19) width 136: "works inside the DRT."
+              RenderBlock {P} at (0,54) size 284x38
+                RenderText {#text} at (0,0) size 269x38
+                  text run at (0,0) width 269: "This frame should be 300px wide and not be"
+                  text run at (0,19) width 165: "scrollable (have scrollbars)."
+        layer at (0,350) size 300x300
+          RenderBlock (positioned) {DIV} at (0,350) size 300x300 [bgcolor=#0000FF]
+      RenderFrame {FRAME} at (300,0) size 700x650
+        layer at (0,0) size 700x650
+          RenderView at (0,0) size 700x650
+        layer at (0,0) size 700x650
+          RenderBlock {HTML} at (0,0) size 700x650
+            RenderBody {BODY} at (8,8) size 684x634
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-subframesets-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/frameset-flattening-subframesets-expected.txt
new file mode 100644 (file)
index 0000000..bffe9fe
--- /dev/null
@@ -0,0 +1,58 @@
+layer at (0,0) size 900x618
+  RenderView at (0,0) size 784x584
+layer at (0,0) size 900x618
+  RenderBlock {HTML} at (0,0) size 784x618
+    RenderFrameSet {FRAMESET} at (0,0) size 900x618
+      RenderFrameSet {FRAMESET} at (0,0) size 900x150
+        RenderFrame {FRAME} at (0,0) size 450x150
+          layer at (0,0) size 450x150
+            RenderView at (0,0) size 450x150
+          layer at (0,0) size 450x150
+            RenderBlock {HTML} at (0,0) size 450x150
+              RenderBody {BODY} at (8,8) size 434x126 [bgcolor=#008000]
+                RenderBlock {P} at (0,0) size 434x19
+                  RenderText {#text} at (0,0) size 343x19
+                    text run at (0,0) width 343: "A frameset flattening test that only works inside the DRT."
+                RenderBlock {P} at (0,35) size 434x38
+                  RenderText {#text} at (0,0) size 395x38
+                    text run at (0,0) width 395: "This frame is inside frameset 1 and should be at least 450px wide,"
+                    text run at (0,19) width 193: "150px tall and not be scrollable."
+          layer at (0,0) size 450x50
+            RenderBlock (positioned) {DIV} at (0,0) size 450x50
+        RenderFrame {FRAME} at (450,0) size 450x150
+          layer at (0,0) size 450x150
+            RenderView at (0,0) size 450x150
+          layer at (0,0) size 450x150
+            RenderBlock {HTML} at (0,0) size 450x150
+              RenderBody {BODY} at (8,8) size 434x126 [bgcolor=#FF0000]
+                RenderBlock {P} at (0,0) size 434x38
+                  RenderText {#text} at (0,0) size 395x38
+                    text run at (0,0) width 395: "This frame is inside frameset 1 and should be at least 450px wide,"
+                    text run at (0,19) width 193: "150px tall and not be scrollable."
+          layer at (0,0) size 450x150
+            RenderBlock (positioned) {DIV} at (0,0) size 450x150
+      RenderFrameSet {FRAMESET} at (0,150) size 900x468
+        RenderFrame {FRAME} at (0,0) size 450x468
+          layer at (0,0) size 450x468
+            RenderView at (0,0) size 450x468
+          layer at (0,0) size 450x468
+            RenderBlock {HTML} at (0,0) size 450x468
+              RenderBody {BODY} at (8,8) size 434x444 [bgcolor=#FFFF00]
+                RenderBlock {P} at (0,0) size 434x38
+                  RenderText {#text} at (0,0) size 395x38
+                    text run at (0,0) width 395: "This frame is inside frameset 2 and should be at least 450px wide,"
+                    text run at (0,19) width 193: "400px tall and not be scrollable."
+          layer at (0,0) size 200x450
+            RenderBlock (positioned) {DIV} at (0,0) size 200x450
+        RenderFrame {FRAME} at (450,0) size 450x468
+          layer at (0,0) size 450x468
+            RenderView at (0,0) size 450x468
+          layer at (0,0) size 450x468
+            RenderBlock {HTML} at (0,0) size 450x468
+              RenderBody {BODY} at (8,8) size 434x444 [bgcolor=#0000FF]
+                RenderBlock {P} at (0,0) size 434x38
+                  RenderText {#text} at (0,0) size 395x38
+                    text run at (0,0) width 395: "This frame is inside frameset 2 and should be at least 450px wide,"
+                    text run at (0,19) width 193: "400px tall and not be scrollable."
+          layer at (0,0) size 450x450
+            RenderBlock (positioned) {DIV} at (0,0) size 450x450
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-height-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-height-expected.txt
new file mode 100644 (file)
index 0000000..4c518bf
--- /dev/null
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x576 [bgcolor=#008000]
+      RenderBlock {P} at (0,0) size 784x19
+        RenderText {#text} at (0,0) size 402x19
+          text run at (0,0) width 402: "Test for iframe flattening. The flattening only works inside the DRT."
+      RenderBlock {P} at (0,35) size 784x19
+        RenderText {#text} at (0,0) size 742x19
+          text run at (0,0) width 410: "This inner frame should be 400px in each direction, disregarding the "
+          text run at (410,0) width 332: "border, and it must not be scrollable or have scrollbars."
+      RenderBlock {P} at (0,70) size 784x204
+        RenderPartObject {IFRAME} at (0,0) size 160x204 [border: (2px inset #000000)]
+          layer at (0,0) size 400x400
+            RenderView at (0,0) size 156x200
+          layer at (0,0) size 156x200
+            RenderBlock {HTML} at (0,0) size 156x200
+              RenderBody {BODY} at (8,8) size 140x184 [bgcolor=#0000FF]
+          layer at (0,0) size 400x400
+            RenderBlock (positioned) {DIV} at (0,0) size 400x400
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-and-height-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-and-height-expected.txt
new file mode 100644 (file)
index 0000000..ff9fc0b
--- /dev/null
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x576 [bgcolor=#008000]
+      RenderBlock {P} at (0,0) size 784x19
+        RenderText {#text} at (0,0) size 402x19
+          text run at (0,0) width 402: "Test for iframe flattening. The flattening only works inside the DRT."
+      RenderBlock {P} at (0,35) size 784x19
+        RenderText {#text} at (0,0) size 742x19
+          text run at (0,0) width 410: "This inner frame should be 400px in each direction, disregarding the "
+          text run at (410,0) width 332: "border, and it must not be scrollable or have scrollbars."
+      RenderBlock {P} at (0,70) size 784x204
+        RenderPartObject {IFRAME} at (0,0) size 204x204 [border: (2px inset #000000)]
+          layer at (0,0) size 400x400
+            RenderView at (0,0) size 200x200
+          layer at (0,0) size 200x200
+            RenderBlock {HTML} at (0,0) size 200x200
+              RenderBody {BODY} at (8,8) size 184x184 [bgcolor=#FF0000]
+          layer at (0,0) size 400x400
+            RenderBlock (positioned) {DIV} at (0,0) size 400x400
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-and-height-no-scrolling-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-and-height-no-scrolling-expected.txt
new file mode 100644 (file)
index 0000000..90452e1
--- /dev/null
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x576 [bgcolor=#008000]
+      RenderBlock {P} at (0,0) size 784x19
+        RenderText {#text} at (0,0) size 402x19
+          text run at (0,0) width 402: "Test for iframe flattening. The flattening only works inside the DRT."
+      RenderBlock {P} at (0,35) size 784x19
+        RenderText {#text} at (0,0) size 742x19
+          text run at (0,0) width 410: "This inner frame should be 200px in each direction, disregarding the "
+          text run at (410,0) width 332: "border, and it must not be scrollable or have scrollbars."
+      RenderBlock {P} at (0,70) size 784x204
+        RenderPartObject {IFRAME} at (0,0) size 204x204 [border: (2px inset #000000)]
+          layer at (0,0) size 400x400
+            RenderView at (0,0) size 200x200
+          layer at (0,0) size 200x200
+            RenderBlock {HTML} at (0,0) size 200x200
+              RenderBody {BODY} at (8,8) size 184x184 [bgcolor=#FF0000]
+          layer at (0,0) size 400x400
+            RenderBlock (positioned) {DIV} at (0,0) size 400x400
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-fixed-width-expected.txt
new file mode 100644 (file)
index 0000000..792d16e
--- /dev/null
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x576 [bgcolor=#008000]
+      RenderBlock {P} at (0,0) size 784x19
+        RenderText {#text} at (0,0) size 402x19
+          text run at (0,0) width 402: "Test for iframe flattening. The flattening only works inside the DRT."
+      RenderBlock {P} at (0,35) size 784x19
+        RenderText {#text} at (0,0) size 742x19
+          text run at (0,0) width 410: "This inner frame should be 400px in each direction, disregarding the "
+          text run at (410,0) width 332: "border, and it must not be scrollable or have scrollbars."
+      RenderBlock {P} at (0,70) size 784x124
+        RenderPartObject {IFRAME} at (0,0) size 204x124 [border: (2px inset #000000)]
+          layer at (0,0) size 400x400
+            RenderView at (0,0) size 200x120
+          layer at (0,0) size 200x120
+            RenderBlock {HTML} at (0,0) size 200x120
+              RenderBody {BODY} at (8,8) size 184x104 [bgcolor=#FF0000]
+          layer at (0,0) size 400x400
+            RenderBlock (positioned) {DIV} at (0,0) size 400x400
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-offscreen-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-offscreen-expected.txt
new file mode 100644 (file)
index 0000000..d6e250f
--- /dev/null
@@ -0,0 +1,33 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderBlock {P} at (0,0) size 784x0
+      RenderBlock {P} at (0,0) size 784x0
+      RenderBlock {P} at (0,0) size 784x0
+      RenderBlock {P} at (0,0) size 784x0
+layer at (8,200) size 792x159
+  RenderBlock (positioned) {DIV} at (8,200) size 792x159
+    RenderBlock {P} at (0,16) size 792x38
+      RenderText {#text} at (0,0) size 763x38
+        text run at (0,0) width 419: "Test for iframe flattening, with three inner frames just outside the view "
+        text run at (419,0) width 344: "and of the size 200x200 px, plus one inner frame is partly"
+        text run at (0,19) width 41: "visible."
+    RenderBlock {P} at (0,70) size 792x38
+      RenderText {#text} at (0,0) size 756x38
+        text run at (0,0) width 419: "This yellow, red and blue inner frames must remain offscreen, and the "
+        text run at (419,0) width 337: "green inner frames should be of size 300x300 (200x200"
+        text run at (0,19) width 46: "visible)."
+    RenderBlock {P} at (0,124) size 792x19
+      RenderText {#text} at (0,0) size 434x19
+        text run at (0,0) width 434: "NOTE: The test only works in the DRT or with frame flattening enabled."
+layer at (-100,-100) size 200x200 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 outlineClip at (0,0) size 800x600
+  RenderPartObject {IFRAME} at (-100,-100) size 200x200
+    layer at (0,0) size 300x300
+      RenderView at (0,0) size 200x200
+    layer at (0,0) size 200x200
+      RenderBlock {HTML} at (0,0) size 200x200
+        RenderBody {BODY} at (8,8) size 184x184 [bgcolor=#008000]
+    layer at (0,0) size 300x300
+      RenderBlock (positioned) {DIV} at (0,0) size 300x300
diff --git a/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-simple-expected.txt b/LayoutTests/platform/gtk/fast/frames/flattening/iframe-flattening-simple-expected.txt
new file mode 100644 (file)
index 0000000..4a639a8
--- /dev/null
@@ -0,0 +1,21 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x576 [bgcolor=#008000]
+      RenderBlock {P} at (0,0) size 784x19
+        RenderText {#text} at (0,0) size 402x19
+          text run at (0,0) width 402: "Test for iframe flattening. The flattening only works inside the DRT."
+      RenderBlock {P} at (0,35) size 784x19
+        RenderText {#text} at (0,0) size 742x19
+          text run at (0,0) width 410: "This inner frame should be 400px in each direction, disregarding the "
+          text run at (410,0) width 332: "border, and it must not be scrollable or have scrollbars."
+      RenderBlock {P} at (0,70) size 784x124
+        RenderPartObject {IFRAME} at (0,0) size 160x124 [border: (2px inset #000000)]
+          layer at (0,0) size 400x400
+            RenderView at (0,0) size 156x120
+          layer at (0,0) size 156x120
+            RenderBlock {HTML} at (0,0) size 156x120
+              RenderBody {BODY} at (8,8) size 140x104 [bgcolor=#FF0000]
+          layer at (0,0) size 400x400
+            RenderBlock (positioned) {DIV} at (0,0) size 400x400
index fd195ab..cd3becd 100644 (file)
@@ -1,3 +1,21 @@
+2010-10-14  Antonio Gomes  <agomes@rim.com>
+
+        Reviewed by Martin Robinson and Xan Lopez.
+
+        [Gtk]: DRT does not support frame flattening testing
+        https://bugs.webkit.org/show_bug.cgi?id=38650
+
+        Implement enable-frame-flattening API for Gtk+.
+
+        * webkit/webkitwebsettings.cpp:
+        (webkit_web_settings_class_init):
+        (webkit_web_settings_set_property):
+        (webkit_web_settings_get_property):
+        (webkit_web_settings_copy):
+        * webkit/webkitwebview.cpp:
+        (webkit_web_view_update_settings):
+        (webkit_web_view_settings_notify):
+
 2010-10-15  Nikolas Zimmermann  <nzimmermann@rim.com>
 
         Reviewed by Dirk Schulze.
index d833108..3a4467f 100644 (file)
@@ -94,6 +94,7 @@ struct _WebKitWebSettingsPrivate {
     gboolean enable_html5_local_storage;
     gboolean enable_xss_auditor;
     gboolean enable_spatial_navigation;
+    gboolean enable_frame_flattening;
     gchar* user_agent;
     gboolean javascript_can_open_windows_automatically;
     gboolean javascript_can_access_clipboard;
@@ -145,6 +146,7 @@ enum {
     PROP_ENABLE_HTML5_LOCAL_STORAGE,
     PROP_ENABLE_XSS_AUDITOR,
     PROP_ENABLE_SPATIAL_NAVIGATION,
+    PROP_ENABLE_FRAME_FLATTENING,
     PROP_USER_AGENT,
     PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY,
     PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD,
@@ -600,6 +602,25 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
                                                          FALSE,
                                                          flags));
     /**
+    * WebKitWebSettings:enable-frame-flattening
+    *
+    * Whether to enable the Frame Flattening. With this setting each subframe is expanded
+    * to its contents, which will flatten all the frames to become one scrollable page.
+    * On touch devices, it is desired to not have any scrollable sub parts of the page as
+    * it results in a confusing user experience, with scrolling sometimes scrolling sub parts
+    * and at other times scrolling the page itself. For this reason iframes and framesets are
+    * barely usable on touch devices.
+    *
+    * Since: 1.3.5
+    */
+    g_object_class_install_property(gobject_class,
+                                    PROP_ENABLE_FRAME_FLATTENING,
+                                    g_param_spec_boolean("enable-frame-flattening",
+                                                         _("Enable Frame Flattening"),
+                                                         _("Whether to enable Frame Flattening"),
+                                                         FALSE,
+                                                         flags));
+    /**
      * WebKitWebSettings:user-agent:
      *
      * The User-Agent string used by WebKitGtk.
@@ -1054,6 +1075,9 @@ static void webkit_web_settings_set_property(GObject* object, guint prop_id, con
     case PROP_ENABLE_SPATIAL_NAVIGATION:
         priv->enable_spatial_navigation = g_value_get_boolean(value);
         break;
+    case PROP_ENABLE_FRAME_FLATTENING:
+        priv->enable_frame_flattening = g_value_get_boolean(value);
+        break;
     case PROP_USER_AGENT:
         g_free(priv->user_agent);
         if (!g_value_get_string(value) || !strlen(g_value_get_string(value)))
@@ -1202,6 +1226,9 @@ static void webkit_web_settings_get_property(GObject* object, guint prop_id, GVa
     case PROP_ENABLE_SPATIAL_NAVIGATION:
         g_value_set_boolean(value, priv->enable_spatial_navigation);
         break;
+    case PROP_ENABLE_FRAME_FLATTENING:
+        g_value_set_boolean(value, priv->enable_frame_flattening);
+        break;
     case PROP_USER_AGENT:
         g_value_set_string(value, priv->user_agent);
         break;
@@ -1306,6 +1333,7 @@ WebKitWebSettings* webkit_web_settings_copy(WebKitWebSettings* web_settings)
                  "enable-html5-local-storage", priv->enable_html5_local_storage,
                  "enable-xss-auditor", priv->enable_xss_auditor,
                  "enable-spatial-navigation", priv->enable_spatial_navigation,
+                 "enable-frame-flattening", priv->enable_frame_flattening,
                  "user-agent", webkit_web_settings_get_user_agent(web_settings),
                  "javascript-can-open-windows-automatically", priv->javascript_can_open_windows_automatically,
                  "javascript-can-access-clipboard", priv->javascript_can_access_clipboard,
index 60c162a..f5d0ef6 100644 (file)
@@ -2883,7 +2883,7 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
     gboolean autoLoadImages, autoShrinkImages, printBackgrounds,
         enableScripts, enablePlugins, enableDeveloperExtras, resizableTextAreas,
         enablePrivateBrowsing, enableCaretBrowsing, enableHTML5Database, enableHTML5LocalStorage,
-        enableXSSAuditor, enableSpatialNavigation, javascriptCanOpenWindows,
+        enableXSSAuditor, enableSpatialNavigation, enableFrameFlattening, javascriptCanOpenWindows,
         javaScriptCanAccessClipboard, enableOfflineWebAppCache,
         enableUniversalAccessFromFileURI, enableFileAccessFromFileURI,
         enableDOMPaste, tabKeyCyclesThroughElements,
@@ -2913,6 +2913,7 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
                  "enable-html5-local-storage", &enableHTML5LocalStorage,
                  "enable-xss-auditor", &enableXSSAuditor,
                  "enable-spatial-navigation", &enableSpatialNavigation,
+                 "enable-frame-flattening", &enableFrameFlattening,
                  "javascript-can-open-windows-automatically", &javascriptCanOpenWindows,
                  "javascript-can-access-clipboard", &javaScriptCanAccessClipboard,
                  "enable-offline-web-application-cache", &enableOfflineWebAppCache,
@@ -2950,6 +2951,7 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
     settings->setLocalStorageEnabled(enableHTML5LocalStorage);
     settings->setXSSAuditorEnabled(enableXSSAuditor);
     settings->setSpatialNavigationEnabled(enableSpatialNavigation);
+    settings->setFrameFlatteningEnabled(enableFrameFlattening);
     settings->setJavaScriptCanOpenWindowsAutomatically(javascriptCanOpenWindows);
     settings->setJavaScriptCanAccessClipboard(javaScriptCanAccessClipboard);
     settings->setOfflineWebApplicationCacheEnabled(enableOfflineWebAppCache);
@@ -3048,6 +3050,8 @@ static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GPar
         settings->setXSSAuditorEnabled(g_value_get_boolean(&value));
     else if (name == g_intern_string("enable-spatial-navigation"))
         settings->setSpatialNavigationEnabled(g_value_get_boolean(&value));
+    else if (name == g_intern_string("enable-frame-flattening"))
+        settings->setFrameFlatteningEnabled(g_value_get_boolean(&value));
     else if (name == g_intern_string("javascript-can-open-windows-automatically"))
         settings->setJavaScriptCanOpenWindowsAutomatically(g_value_get_boolean(&value));
     else if (name == g_intern_string("javascript-can-access-clipboard"))
index f4486bd..0c7de9d 100644 (file)
@@ -1,3 +1,18 @@
+2010-10-14  Antonio Gomes  <agomes@rim.com>
+
+        Reviewed by Martin Robinson and Xan Lopez.
+
+        [Gtk]: DRT does not support frame flattening testing
+        https://bugs.webkit.org/show_bug.cgi?id=38650
+
+        Implement DRT's support for toggling on/off frame flattening
+        support.
+
+        * DumpRenderTree/gtk/DumpRenderTree.cpp:
+        (resetDefaultsToConsistentValues):
+        * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
+        (LayoutTestController::setFrameFlatteningEnabled):
+
 2010-10-15  Dirk Pranke  <dpranke@chromium.org>
 
         Reviewed by Eric Siedel.
index 00ed2f1..01de0a6 100644 (file)
@@ -385,6 +385,7 @@ static void resetDefaultsToConsistentValues()
                  "enable-html5-local-storage", TRUE,
                  "enable-xss-auditor", FALSE,
                  "enable-spatial-navigation", FALSE,
+                 "enable-frame-flattening", FALSE,
                  "javascript-can-access-clipboard", TRUE,
                  "javascript-can-open-windows-automatically", TRUE,
                  "enable-offline-web-application-cache", TRUE,
index d831076..50b6179 100644 (file)
@@ -423,7 +423,11 @@ void LayoutTestController::setXSSAuditorEnabled(bool flag)
 
 void LayoutTestController::setFrameFlatteningEnabled(bool flag)
 {
-    // FIXME: implement
+    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
+    ASSERT(view);
+
+    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
+    g_object_set(G_OBJECT(settings), "enable-frame-flattening", flag, NULL);
 }
 
 void LayoutTestController::setSpatialNavigationEnabled(bool flag)