* Electron Version: 3.0.0-beta.1
* Operating System (Platform and Version): macOS 10.13 (but all others seem affected, too)
* Last known working Electron version: 2.0.x

**Expected Behavior**
Spellchecking should work: After calling `webFrame.setSpellCheckProvider` with a given provider, that provider's `spellCheck()` method should be called.

**Actual behavior**
Calling `webFrame.setSpellCheckProvider` seems to have no effect - the provider is simply never called.

**To Reproduce**
Clone the repo below and start the app. The spellcheck provider is configured to log each input word. However, it appears that `spellCheck` is never called.

```sh
git clone https://github.com/felixrieseberg/electron-3-spellcheck
cd electron-3-spellcheck
npm install
npm start || electron .
```


atom/renderer/api/atom_api_spell_check_client.cc
const blink::WebString& word) {}
void SpellCheckClient::SpellCheckText(
    const base::string16& text,
    bool stop_at_first_result,
    std::vector<blink::WebTextCheckingResult>* results) {
  if (text.empty() || spell_check_.IsEmpty())
    return;
  if (!text_iterator_.IsInitialized() &&
      !text_iterator_.Initialize(&character_attributes_, true)) {
    
    VLOG(1) << "Failed to initialize SpellcheckWordIterator";
    return;
  }
  if (!contraction_iterator_.IsInitialized() &&
      !contraction_iterator_.Initialize(&character_attributes_, false)) {
    
    VLOG(1) << "Failed to initialize contraction_iterator_";
    return;
  }
  text_iterator_.SetText(text.c_str(), text.size());
  SpellCheckScope scope(*this);
  base::string16 word;
  int word_start;
  int word_length;
  for (auto status =
           text_iterator_.GetNextWord(&word, &word_start, &word_length);
       status != SpellcheckWordIterator::IS_END_OF_TEXT;
       status = text_iterator_.GetNextWord(&word, &word_start, &word_length)) {
    if (status == SpellcheckWordIterator::IS_SKIPPABLE)