<h3 dir="auto">Issue Details</h3>
<ul dir="auto">
<li>
<p dir="auto"><strong>Electron Version:</strong> 7.1.8</p>
</li>
<li>
<p dir="auto"><strong>Operating System:</strong> macOS 10.15.2/Windows 10</p>
</li>
<li>
<p dir="auto"><strong>Last Known Working Electron version:</strong> 4.1.4</p>
</li>
</ul>
<h3 dir="auto">Expected Behavior</h3>
<p dir="auto">with Site Isolation enabled in electron 7.x, When I execute</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="webFrame.setSpellCheckProvider(&quot;en-US&quot;, {
  spellCheck(words, callback) {
    setTimeout(() =&gt; {
     const misspelled = words.filter((text) =&gt; checker.isMisspelled(text));
     callback(misspelled);
    }, 0);
  }
});"><pre class="notranslate"><span class="pl-s1">webFrame</span><span class="pl-kos">.</span><span class="pl-en">setSpellCheckProvider</span><span class="pl-kos">(</span><span class="pl-s">"en-US"</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
  <span class="pl-en">spellCheck</span><span class="pl-kos">(</span><span class="pl-s1">words</span><span class="pl-kos">,</span> <span class="pl-s1">callback</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-en">setTimeout</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
     <span class="pl-k">const</span> <span class="pl-s1">misspelled</span> <span class="pl-c1">=</span> <span class="pl-s1">words</span><span class="pl-kos">.</span><span class="pl-en">filter</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">text</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-s1">checker</span><span class="pl-kos">.</span><span class="pl-en">isMisspelled</span><span class="pl-kos">(</span><span class="pl-s1">text</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
     <span class="pl-s1">callback</span><span class="pl-kos">(</span><span class="pl-s1">misspelled</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c1">0</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">Spellchecker is not working inside the iframes but works in the top webview.</p>
<p dir="auto">Provided, it works if I disable site isolation trials using<br>
<code class="notranslate">app.commandLine.appendSwitch('disable-site-isolation-trials', 'true');</code></p>
<h3 dir="auto">Actual Behavior</h3>
<p dir="auto">Irrespective of site isolation feature setting, We should be able to set spellchecker for the entire webview including the iframes.<br>
Thanks.</p>
<h3 dir="auto">To Reproduce</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="git clone https://github.com/Syed-Umair/electron-quick-start.git
git checkout spellcheck-issue
npm i
npm run start"><pre class="notranslate"><code class="notranslate">git clone https://github.com/Syed-Umair/electron-quick-start.git
git checkout spellcheck-issue
npm i
npm run start
</code></pre></div>
<p dir="auto">You can checkout the recording of the issue in the following link:</p>
<p dir="auto"><a href="https://mega.nz/#!1M0lUY4Z!j1snymVCCsNZMafzF5RKLR84PcpoLzdeqc4NVOwOwLk" rel="nofollow">https://mega.nz/#!1M0lUY4Z!j1snymVCCsNZMafzF5RKLR84PcpoLzdeqc4NVOwOwLk</a></p>
<h3 dir="auto">Preflight Checklist</h3>

<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have read the <a href="https://github.com/electron/electron/blob/master/CONTRIBUTING.md">Contributing Guidelines</a> for this project.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I agree to follow the <a href="https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md">Code of Conduct</a> that this project adheres to.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have searched the issue tracker for an issue that matches the one I want to file, without success.</li>
</ul>
<h3 dir="auto">Issue Details</h3>
<ul dir="auto">
<li><strong>Electron Version:</strong><br>
6.1.4 (but happen also on 5.x.x and 6.x.x has a workaround for 4.x.x)</li>
<li><strong>Operating System:</strong><br>
Windows 10</li>
<li><strong>Last Known Working Electron version:</strong><br>
4.2.1</li>
</ul>
<h3 dir="auto">Expected Behavior</h3>
<p dir="auto">webFrame.setSpellCheckProvider API should work for dynamically created iframes.</p>
<p dir="auto">For example:<br>
When creating an iframe with a source of <a href="http://www.mydummywebsite.com/index.html" rel="nofollow">http://www.mydummywebsite.com/index.html</a> (this doesn't really exist)<br>
The text fields in index.html should invoke the spellCheck function (below) when there is a spelling mistake.</p>
<p dir="auto">This API should work (example from docomentation)</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="webFrame.setSpellCheckProvider('en-US', {
  spellCheck (words, callback) {
    setTimeout(() =&gt; {
      const spellchecker = require('spellchecker')
      const misspelled = words.filter(x =&gt; spellchecker.isMisspelled(x))
      callback(misspelled)
    }, 0)
  }
})"><pre class="notranslate"><code class="notranslate">webFrame.setSpellCheckProvider('en-US', {
  spellCheck (words, callback) {
    setTimeout(() =&gt; {
      const spellchecker = require('spellchecker')
      const misspelled = words.filter(x =&gt; spellchecker.isMisspelled(x))
      callback(misspelled)
    }, 0)
  }
})
</code></pre></div>
<h3 dir="auto">Actual Behavior</h3>
<p dir="auto">In Electron version, 4.x.x the webFrame.setSpellCheckProvider API also didnt work for dynamically created iframes. The workaround was to call webFrame.setSpellCheckProvider API again after each iframes creation.</p>
<p dir="auto">On electron versions &gt;= 5.x.x (including 6.x.x) this workaround dosnt work anymore.</p>
<p dir="auto">The spellcheck API only works for local HTML files build in the local nodejs project.</p>
<h3 dir="auto">To Reproduce</h3>
<ol dir="auto">
<li>Create a project that uses the electron NPM module.</li>
<li>Create an iframe that its source is a local HTML file with text fields. the spell check API will be invoked for them</li>
<li>create another iframe with a source fo a website (or localhost website) that contains text fields. The spellCheck API will not work for them. If you call webFrame.setSpellCheckProvide after the iframe is created it still don't work.</li>
</ol>
<p dir="auto">I did see this issue which was not resolved at the end:<br>
<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="337114946" data-permission-text="Title is private" data-url="https://github.com/electron/electron/issues/13514" data-hovercard-type="issue" data-hovercard-url="/electron/electron/issues/13514/hovercard" href="https://github.com/electron/electron/issues/13514">#13514</a></p>
<p dir="auto">Does this happen to anyone else? Will the be solved in future releases of Electron?</p>
<p dir="auto">Thanks!</p>