<!DOCTYPE html>
<html>
<body>
<p id="description">This tests copying and pasting content across shadow boundaries.<br>
To test manually, copy text blow starting from "hello" ending with "WebKit", and paste into the green box below. All the text shoul be copied & pasted.</p>
<style> .box { border: solid 1px; padding: 0.2rem; margin-bottom: 1rem; } </style>
<div id="source" class="box" style="border-color: blue"><div style="font-style: italic" id="host1"><b>hello</b></div><div id="host2">rocks</div></div>
<div id="destination" class="box" style="border-color: blue" contenteditable></div>
<pre id="htmlResult"></pre>
<pre id="textResult"></pre>
<script src="../../resources/dump-as-markup.js"></script>
<script>

Markup.description(description.textContent);
Markup.waitUntilDone();

const shadowRoot1 = host1.attachShadow({mode: 'open'});
shadowRoot1.innerHTML = '<slot style="color: blue;"></slot> world';

const shadowRoot2 = host2.attachShadow({mode: 'open'});
shadowRoot2.innerHTML = '<u>WebKit <slot></slot></u>';

destination.addEventListener('paste', (event) => {
    htmlResult.textContent = event.clipboardData.getData('text/html');
    textResult.textContent = event.clipboardData.getData('text/plain');
    setTimeout(() => {
        Markup.dump(destination, 'pasted html');
        Markup.dump(textResult, 'text/plain');
        Markup.notifyDone();
    }, 0);
});

if (window.testRunner) {
    internals.setSelectionWithoutValidation(source, 0, shadowRoot2.querySelector('u'), 1);
    document.execCommand('copy');
    destination.focus();
    document.execCommand('paste');
}

</script>
</body>
</html>
