From 0c49ffe20af19b8febbac5664adba5ec6f2eb576 Mon Sep 17 00:00:00 2001
From: Ann Marie Ward <amward@fastmail.us>
Date: Sat, 6 Feb 2021 15:12:17 -0700
Subject: [PATCH 1/5] Add `allow` prop to html.Iframe

---
 scripts/extract-attributes.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/extract-attributes.js b/scripts/extract-attributes.js
index 997a34b8..7aa5450a 100644
--- a/scripts/extract-attributes.js
+++ b/scripts/extract-attributes.js
@@ -12,7 +12,7 @@ const htmlPath = './data/attributes.html';
 // From https://facebook.github.io/react/docs/tags-and-attributes.html#supported-attributes
 // less the special `className` and `htmlFor` props,
 // and `httpEquiv` + `acceptCharset` which are already correctly camelCased.
-const supportedAttributes = ['accept', 'accessKey', 'action',
+const supportedAttributes = ['accept', 'accessKey', 'action', 'allow',
 'allowFullScreen', 'allowTransparency', 'alt', 'async', 'autoComplete',
 'autoFocus', 'autoPlay', 'capture', 'cellPadding', 'cellSpacing', 'challenge',
 'charSet', 'checked', 'cite', 'classID', 'colSpan', 'cols', 'content',

From 116944c6eee3b38b34ac8325fe44b0b0ae607a81 Mon Sep 17 00:00:00 2001
From: Ann Marie Ward <amward@fastmail.us>
Date: Tue, 9 Feb 2021 08:41:53 -0700
Subject: [PATCH 2/5] Add `referrerPolicy` prop and update tests

---
 scripts/extract-attributes.js |  4 +-
 tests/test_integration.py     | 91 +++++++++++++++++++----------------
 2 files changed, 52 insertions(+), 43 deletions(-)

diff --git a/scripts/extract-attributes.js b/scripts/extract-attributes.js
index 7aa5450a..6197168b 100644
--- a/scripts/extract-attributes.js
+++ b/scripts/extract-attributes.js
@@ -25,8 +25,8 @@ const supportedAttributes = ['accept', 'accessKey', 'action', 'allow',
 'manifest', 'marginHeight', 'marginWidth', 'max', 'maxLength', 'media',
 'mediaGroup', 'method', 'min', 'minLength', 'multiple', 'muted', 'name',
 'noValidate', 'nonce', 'open', 'optimum', 'pattern', 'placeholder', 'poster',
-'preload', 'profile', 'radioGroup', 'readOnly', 'rel', 'required', 'reversed',
-'role', 'rowSpan', 'rows', 'sandbox', 'scope', 'scoped', 'scrolling',
+'preload', 'profile', 'radioGroup', 'readOnly', 'referrerPolicy' 'rel', 'required', 
+'reversed', 'role', 'rowSpan', 'rows', 'sandbox', 'scope', 'scoped', 'scrolling',
 'seamless', 'selected', 'shape', 'size', 'sizes', 'span', 'spellCheck', 'src',
 'srcDoc', 'srcLang', 'srcSet', 'start', 'step', 'style', 'summary', 'tabIndex',
 'target', 'title', 'type', 'useMap', 'value', 'width', 'wmode', 'wrap'];
diff --git a/tests/test_integration.py b/tests/test_integration.py
index 313ad503..f4043abb 100644
--- a/tests/test_integration.py
+++ b/tests/test_integration.py
@@ -7,93 +7,102 @@
 
 
 def test_click_simple(dash_duo):
-    call_count = Value('i', 0)
+    call_count = Value("i", 0)
 
     app = dash.Dash(__name__)
-    app.layout = html.Div([
-        html.Div(id='container'),
-        html.Button('Click', id='button', n_clicks=0)
-    ])
-
-    @app.callback(Output('container', 'children'), Input('button', 'n_clicks'))
+    app.layout = html.Div(
+        [
+            html.Div(id="container"),
+            html.Button("Click", id="button", n_clicks=0),
+            html.Iframe(id="video", allow="fullscreen", referrerPolicy="origin"),
+        ]
+    )
+
+    @app.callback(Output("container", "children"), Input("button", "n_clicks"))
     def update_output(n_clicks):
         call_count.value += 1
-        return 'clicked {} times'.format(n_clicks)
+        return "clicked {} times".format(n_clicks)
 
     dash_duo.start_server(app)
 
-    dash_duo.find_element('#container')
+    dash_duo.find_element("#container")
 
-    dash_duo.wait_for_text_to_equal(
-        '#container', 'clicked 0 times')
+    dash_duo.wait_for_text_to_equal("#container", "clicked 0 times")
     assert call_count.value == 1
-    dash_duo.percy_snapshot('button initialization')
+    dash_duo.percy_snapshot("button initialization")
 
-    dash_duo.find_element('#button').click()
+    dash_duo.find_element("#button").click()
 
-    dash_duo.wait_for_text_to_equal(
-        '#container', 'clicked 1 times')
+    dash_duo.wait_for_text_to_equal("#container", "clicked 1 times")
     assert call_count.value == 2
-    dash_duo.percy_snapshot('button click')
+    dash_duo.percy_snapshot("button click")
 
     assert not dash_duo.get_logs()
 
+    assert dash_duo.find_element("#video").get_attribute("allow") == "fullscreen"
+    assert dash_duo.find_element("#video").get_attribute("referrerpolicy") == "origin"
+
 
 def test_click_prev(dash_duo):
-    call_count = Value('i', 0)
-    timestamp_1 = Value('d', -5)
-    timestamp_2 = Value('d', -5)
+    call_count = Value("i", 0)
+    timestamp_1 = Value("d", -5)
+    timestamp_2 = Value("d", -5)
 
     app = dash.Dash(__name__)
-    app.layout = html.Div([
-        html.Div(id='container'),
-        html.Button('Click', id='button-1', n_clicks=0, n_clicks_timestamp=-1),
-        html.Button('Click', id='button-2', n_clicks=0, n_clicks_timestamp=-1)
-    ])
+    app.layout = html.Div(
+        [
+            html.Div(id="container"),
+            html.Button("Click", id="button-1", n_clicks=0, n_clicks_timestamp=-1),
+            html.Button("Click", id="button-2", n_clicks=0, n_clicks_timestamp=-1),
+        ]
+    )
 
     @app.callback(
-        Output('container', 'children'),
-        [Input('button-1', 'n_clicks'),
-         Input('button-1', 'n_clicks_timestamp'),
-         Input('button-2', 'n_clicks'),
-         Input('button-2', 'n_clicks_timestamp')])
+        Output("container", "children"),
+        [
+            Input("button-1", "n_clicks"),
+            Input("button-1", "n_clicks_timestamp"),
+            Input("button-2", "n_clicks"),
+            Input("button-2", "n_clicks_timestamp"),
+        ],
+    )
     def update_output(*args):
         print(args)
         call_count.value += 1
         timestamp_1.value = args[1]
         timestamp_2.value = args[3]
-        return '{}, {}'.format(args[0], args[2])
+        return "{}, {}".format(args[0], args[2])
 
     dash_duo.start_server(app)
 
-    dash_duo.wait_for_text_to_equal('#container', '0, 0')
+    dash_duo.wait_for_text_to_equal("#container", "0, 0")
     assert timestamp_1.value == -1
     assert timestamp_2.value == -1
     assert call_count.value == 1
-    dash_duo.percy_snapshot('button initialization 1')
+    dash_duo.percy_snapshot("button initialization 1")
 
-    dash_duo.find_element('#button-1').click()
-    dash_duo.wait_for_text_to_equal('#container', '1, 0')
+    dash_duo.find_element("#button-1").click()
+    dash_duo.wait_for_text_to_equal("#container", "1, 0")
     assert timestamp_1.value > ((time.time() - (24 * 60 * 60)) * 1000)
     assert timestamp_2.value == -1
     assert call_count.value == 2
-    dash_duo.percy_snapshot('button-1 click')
+    dash_duo.percy_snapshot("button-1 click")
     prev_timestamp_1 = timestamp_1.value
 
-    dash_duo.find_element('#button-2').click()
-    dash_duo.wait_for_text_to_equal('#container', '1, 1')
+    dash_duo.find_element("#button-2").click()
+    dash_duo.wait_for_text_to_equal("#container", "1, 1")
     assert timestamp_1.value == prev_timestamp_1
     assert timestamp_2.value > ((time.time() - 24 * 60 * 60) * 1000)
     assert call_count.value == 3
-    dash_duo.percy_snapshot('button-2 click')
+    dash_duo.percy_snapshot("button-2 click")
     prev_timestamp_2 = timestamp_2.value
 
-    dash_duo.find_element('#button-2').click()
-    dash_duo.wait_for_text_to_equal('#container', '1, 2')
+    dash_duo.find_element("#button-2").click()
+    dash_duo.wait_for_text_to_equal("#container", "1, 2")
     assert timestamp_1.value == prev_timestamp_1
     assert timestamp_2.value > prev_timestamp_2
     assert timestamp_2.value > timestamp_1.value
     assert call_count.value == 4
-    dash_duo.percy_snapshot('button-2 click again')
+    dash_duo.percy_snapshot("button-2 click again")
 
     assert not dash_duo.get_logs()

From abb2c91c9a6a55b75c1a9a22721c1a61a471c052 Mon Sep 17 00:00:00 2001
From: Ann Marie Ward <amward@fastmail.us>
Date: Tue, 9 Feb 2021 08:43:41 -0700
Subject: [PATCH 3/5] Add `referrerPolicy` prop and update tests

---
 scripts/extract-attributes.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/extract-attributes.js b/scripts/extract-attributes.js
index 6197168b..6e43864d 100644
--- a/scripts/extract-attributes.js
+++ b/scripts/extract-attributes.js
@@ -25,7 +25,7 @@ const supportedAttributes = ['accept', 'accessKey', 'action', 'allow',
 'manifest', 'marginHeight', 'marginWidth', 'max', 'maxLength', 'media',
 'mediaGroup', 'method', 'min', 'minLength', 'multiple', 'muted', 'name',
 'noValidate', 'nonce', 'open', 'optimum', 'pattern', 'placeholder', 'poster',
-'preload', 'profile', 'radioGroup', 'readOnly', 'referrerPolicy' 'rel', 'required', 
+'preload', 'profile', 'radioGroup', 'readOnly', 'referrerPolicy', 'rel', 'required', 
 'reversed', 'role', 'rowSpan', 'rows', 'sandbox', 'scope', 'scoped', 'scrolling',
 'seamless', 'selected', 'shape', 'size', 'sizes', 'span', 'spellCheck', 'src',
 'srcDoc', 'srcLang', 'srcSet', 'start', 'step', 'style', 'summary', 'tabIndex',

From 9121acb2f6627e5ac6916d9d7bda1be8fe3b3098 Mon Sep 17 00:00:00 2001
From: Ann Marie Ward <amward@fastmail.us>
Date: Wed, 10 Feb 2021 17:18:54 -0700
Subject: [PATCH 4/5] Updated changelog  Fixes #77

---
 CHANGELOG.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9a250adc..7ee2999a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
 
 ## UNRELEASED
 ### Fixed
+- [#179](https://github.com/plotly/dash-html-components/pull/178) - Fixes [#77](https://github.com/plotly/dash-html-components/issues/77) Added `allow` and `refferrerPolicy` properties to `html.Iframe`
+
 - [#178](https://github.com/plotly/dash-html-components/pull/178) - Fix [#161](https://github.com/plotly/dash-html-components/issues/161) <object> `data` property, and fix [#129](https://github.com/plotly/dash-html-components/issues/129) obsolete, deprecated, and discouraged elements. No elements were removed, but comments were added to the documentation about these elements detailing their limitations.
 
 ## [1.1.2] - 2021-01-19

From 2264cd4e0136e50ecd2792c2f521681178902781 Mon Sep 17 00:00:00 2001
From: Alex Johnson <johnson.alex.c@gmail.com>
Date: Thu, 11 Feb 2021 10:24:36 -0500
Subject: [PATCH 5/5] Update CHANGELOG.md

---
 CHANGELOG.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ee2999a..002ee1cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
 
 ## UNRELEASED
 ### Fixed
-- [#179](https://github.com/plotly/dash-html-components/pull/178) - Fixes [#77](https://github.com/plotly/dash-html-components/issues/77) Added `allow` and `refferrerPolicy` properties to `html.Iframe`
+- [#179](https://github.com/plotly/dash-html-components/pull/178) - Fixes [#77](https://github.com/plotly/dash-html-components/issues/77) Added `allow` and `referrerPolicy` properties to `html.Iframe`
 
 - [#178](https://github.com/plotly/dash-html-components/pull/178) - Fix [#161](https://github.com/plotly/dash-html-components/issues/161) <object> `data` property, and fix [#129](https://github.com/plotly/dash-html-components/issues/129) obsolete, deprecated, and discouraged elements. No elements were removed, but comments were added to the documentation about these elements detailing their limitations.