Backed out 3 changesets (bug 1606794) as req by whimboo ( it`s not a fix for Firefox 72 ). a=backout

Backed out changeset b2b3f10527c3 (bug 1606794)
Backed out changeset 565340ce11e8 (bug 1606794)
Backed out changeset d73cb1b0011d (bug 1606794)

gecko-commit: f48c055e311507f89265e2088ac4a6959e64eb9c
gecko-integration-branch: central
gecko-reviewers: backout
diff --git a/tools/webdriver/webdriver/client.py b/tools/webdriver/webdriver/client.py
index cf4c5fd..0c5bbff 100644
--- a/tools/webdriver/webdriver/client.py
+++ b/tools/webdriver/webdriver/client.py
@@ -738,10 +738,6 @@
         return self.send_element_command("GET", "selected")
 
     @command
-    def screenshot(self):
-        return self.send_element_command("GET", "screenshot")
-
-    @command
     def attribute(self, name):
         return self.send_element_command("GET", "attribute/%s" % name)
 
diff --git a/webdriver/tests/take_element_screenshot/__init__.py b/webdriver/tests/take_element_screenshot/__init__.py
index 9a82cc4..9de8792 100644
--- a/webdriver/tests/take_element_screenshot/__init__.py
+++ b/webdriver/tests/take_element_screenshot/__init__.py
@@ -1,10 +1,12 @@
-def element_dimensions(session, element):
-    return tuple(session.execute_script("""
-        const {devicePixelRatio} = window;
-        let {width, height} = arguments[0].getBoundingClientRect();
+def element_rect(session, element):
+    return session.execute_script("""
+        let {devicePixelRatio} = window;
+        let {left, top, width, height} = arguments[0].getBoundingClientRect();
 
-        return [
-          Math.floor(width * devicePixelRatio),
-          Math.floor(height * devicePixelRatio),
-        ];
-        """, args=(element,)))
+        return {
+            x: Math.floor((left + window.pageXOffset) * devicePixelRatio),
+            y: Math.floor((top + window.pageYOffset) * devicePixelRatio),
+            width: Math.floor(width * devicePixelRatio),
+            height: Math.floor(height * devicePixelRatio),
+        };
+        """, args=(element,))
diff --git a/webdriver/tests/take_element_screenshot/iframe.py b/webdriver/tests/take_element_screenshot/iframe.py
index 83f55de..242122f 100644
--- a/webdriver/tests/take_element_screenshot/iframe.py
+++ b/webdriver/tests/take_element_screenshot/iframe.py
@@ -4,58 +4,21 @@
 from tests.support.image import png_dimensions
 from tests.support.inline import iframe, inline
 
-from . import element_dimensions
+from . import element_rect
 
-DEFAULT_CONTENT = "<div id='content'>Lorem ipsum dolor sit amet.</div>"
 
-REFERENCE_CONTENT = "<div id='outer'>{}</div>".format(DEFAULT_CONTENT)
-REFERENCE_STYLE = """
+DEFAULT_CSS_STYLE = """
     <style>
-      #outer {
+      div, iframe {
         display: block;
-        margin: 0;
-        border: 0;
-        width: 200px;
-        height: 200px;
-      }
-      #content {
-        display: block;
-        margin: 0;
-        border: 0;
-        width: 100px;
-        height: 100px;
-        background: green;
+        border: 1px solid blue;
+        width: 10em;
+        height: 10em;
       }
     </style>
 """
 
-OUTER_IFRAME_STYLE = """
-    <style>
-      iframe {
-        display: block;
-        margin: 0;
-        border: 0;
-        width: 200px;
-        height: 200px;
-      }
-    </style>
-"""
-
-INNER_IFRAME_STYLE = """
-    <style>
-      body {
-        margin: 0;
-      }
-      div {
-        display: block;
-        margin: 0;
-        border: 0;
-        width: 100px;
-        height: 100px;
-        background: green;
-      }
-    </style>
-"""
+DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet.</div>"
 
 
 def take_element_screenshot(session, element_id):
@@ -68,55 +31,24 @@
     )
 
 
-def test_frame_element(session):
-    # Create a reference element which looks exactly like the frame's content
-    session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))
-
-    # Capture the inner content as reference image
-    ref_el = session.find.css("#content", all=False)
-    ref_screenshot = ref_el.screenshot()
-    ref_dimensions = element_dimensions(session, ref_el)
-
-    assert png_dimensions(ref_screenshot) == ref_dimensions
-
-    # Capture the frame's element
-    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
-    session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content)))
-
-    frame = session.find.css("iframe", all=False)
-    session.switch_frame(frame)
-    div = session.find.css("div", all=False)
-    div_dimensions = element_dimensions(session, div)
-    assert div_dimensions == ref_dimensions
-
-    response = take_element_screenshot(session, div.id)
-    div_screenshot = assert_success(response)
-
-    assert png_dimensions(div_screenshot) == ref_dimensions
-    assert div_screenshot == ref_screenshot
-
-
 @pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"])
 def test_source_origin(session, url, domain):
-    # Create a reference element which looks exactly like the iframe
-    session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))
+    session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT))
+    element = session.find.css("div", all=False)
+    rect = element_rect(session, element)
 
-    div = session.find.css("div", all=False)
-    div_dimensions = element_dimensions(session, div)
-
-    response = take_element_screenshot(session, div.id)
+    response = take_element_screenshot(session, element.id)
     reference_screenshot = assert_success(response)
-    assert png_dimensions(reference_screenshot) == div_dimensions
+    assert png_dimensions(reference_screenshot) == (rect["width"], rect["height"])
 
-    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
+    iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT)
     session.url = inline("""{0}{1}""".format(
-        OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain)))
-
+        DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))
     frame_element = session.find.css("iframe", all=False)
-    frame_dimensions = element_dimensions(session, frame_element)
+    frame_rect = element_rect(session, frame_element)
 
     response = take_element_screenshot(session, frame_element.id)
     screenshot = assert_success(response)
-    assert png_dimensions(screenshot) == frame_dimensions
+    assert png_dimensions(screenshot) == (frame_rect["width"], frame_rect["height"])
 
     assert screenshot == reference_screenshot
diff --git a/webdriver/tests/take_element_screenshot/screenshot.py b/webdriver/tests/take_element_screenshot/screenshot.py
index 50d33a2..fd460b6 100644
--- a/webdriver/tests/take_element_screenshot/screenshot.py
+++ b/webdriver/tests/take_element_screenshot/screenshot.py
@@ -2,7 +2,7 @@
 from tests.support.image import png_dimensions
 from tests.support.inline import inline
 
-from . import element_dimensions
+from . import element_rect
 
 
 def take_element_screenshot(session, element_id):
@@ -32,8 +32,9 @@
 def test_format_and_dimensions(session):
     session.url = inline("<input>")
     element = session.find.css("input", all=False)
+    rect = element_rect(session, element)
 
     response = take_element_screenshot(session, element.id)
     screenshot = assert_success(response)
 
-    assert png_dimensions(screenshot) == element_dimensions(session, element)
+    assert png_dimensions(screenshot) == (rect["width"], rect["height"])
diff --git a/webdriver/tests/take_screenshot/__init__.py b/webdriver/tests/take_screenshot/__init__.py
index f3001d9..c07f8d1 100644
--- a/webdriver/tests/take_screenshot/__init__.py
+++ b/webdriver/tests/take_screenshot/__init__.py
@@ -1,18 +1,6 @@
-def element_dimensions(session, element):
-    return tuple(session.execute_script("""
-        const {devicePixelRatio} = window;
-        let {width, height} = arguments[0].getBoundingClientRect();
-
-        return [
-          Math.floor(width * devicePixelRatio),
-          Math.floor(height * devicePixelRatio),
-        ];
-        """, args=(element,)))
-
-
 def viewport_dimensions(session):
     return tuple(session.execute_script("""
-        const {devicePixelRatio, innerHeight, innerWidth} = window;
+        let {devicePixelRatio, innerHeight, innerWidth} = window;
 
         return [
           Math.floor(innerWidth * devicePixelRatio),
diff --git a/webdriver/tests/take_screenshot/iframe.py b/webdriver/tests/take_screenshot/iframe.py
index 6186cf3..4cf8ad0 100644
--- a/webdriver/tests/take_screenshot/iframe.py
+++ b/webdriver/tests/take_screenshot/iframe.py
@@ -4,58 +4,21 @@
 from tests.support.image import png_dimensions
 from tests.support.inline import iframe, inline
 
-from . import element_dimensions, viewport_dimensions
+from . import viewport_dimensions
 
-DEFAULT_CONTENT = "<div id='content'>Lorem ipsum dolor sit amet.</div>"
 
-REFERENCE_CONTENT = "<div id='outer'>{}</div>".format(DEFAULT_CONTENT)
-REFERENCE_STYLE = """
+DEFAULT_CSS_STYLE = """
     <style>
-      #outer {
+      div, iframe {
         display: block;
-        margin: 0;
-        border: 0;
-        width: 200px;
-        height: 200px;
-      }
-      #content {
-        display: block;
-        margin: 0;
-        border: 0;
-        width: 100px;
-        height: 100px;
-        background: green;
+        border: 1px solid blue;
+        width: 10em;
+        height: 10em;
       }
     </style>
 """
 
-OUTER_IFRAME_STYLE = """
-    <style>
-      iframe {
-        display: block;
-        margin: 0;
-        border: 0;
-        width: 200px;
-        height: 200px;
-      }
-    </style>
-"""
-
-INNER_IFRAME_STYLE = """
-    <style>
-      body {
-        margin: 0;
-      }
-      div {
-        display: block;
-        margin: 0;
-        border: 0;
-        width: 100px;
-        height: 100px;
-        background: green;
-      }
-    </style>
-"""
+DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet.</div>"
 
 
 def take_screenshot(session):
@@ -63,45 +26,17 @@
         "GET", "session/{session_id}/screenshot".format(**vars(session)))
 
 
-def test_frame_content(session):
-    # Create a reference element which looks exactly like the frame's content
-    session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))
-
-    # Capture the inner content as reference image
-    ref_el = session.find.css("div", all=False)
-    ref_screenshot = ref_el.screenshot()
-    ref_dimensions = element_dimensions(session, ref_el)
-
-    assert ref_dimensions != viewport_dimensions
-    assert png_dimensions(ref_screenshot) == ref_dimensions
-
-    # Capture the frame's content
-    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
-    session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content)))
-
-    frame = session.find.css("iframe", all=False)
-    session.switch_frame(frame)
-    frame_dimensions = viewport_dimensions(session)
-    assert frame_dimensions == ref_dimensions
-
-    response = take_screenshot(session)
-    frame_screenshot = assert_success(response)
-
-    assert png_dimensions(frame_screenshot) == ref_dimensions
-    assert frame_screenshot == ref_screenshot
-
-
 @pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"])
-def test_source_origin(session, domain):
-    session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))
+def test_source_origin(session, url, domain):
+    session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT))
 
     response = take_screenshot(session)
     reference_screenshot = assert_success(response)
     assert png_dimensions(reference_screenshot) == viewport_dimensions(session)
 
-    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
+    iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT)
     session.url = inline("""{0}{1}""".format(
-        OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain)))
+        DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))
 
     response = take_screenshot(session)
     screenshot = assert_success(response)