Add InputMethodObserver support into InputMethodBase

This is a preparation CL to fix issue 164964.

Following observer callbacks are defined but not yet
supported by ui::InputMethodBase and its sub classes.
- InputMethodObserver::OnCaretBoundsChanged
- InputMethodObserver::OnInputLocaleChanged

This CL makes these callbacks functional for each
sub class of ui::InputMethodBase.

BUG=164964
TEST=ui_unittests --gtest_filter=InputMethodBaseTest.*

Review URL: https://codereview.chromium.org/48393003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231563 0039d316-1c4b-4281-b951-d872f2087c98
void InputMethodIBus::UpdateContextFocusState() {
  const bool old_context_focused = context_focused_;
  switch (GetTextInputType()) {
    case TEXT_INPUT_TYPE_NONE:
    case TEXT_INPUT_TYPE_PASSWORD:
      context_focused_ = false;
      break;
    default:
      context_focused_ = true;
      break;
  }
  if (!GetEngine())
    return;

  if (old_context_focused && !context_focused_) {
    GetEngine()->FocusOut();
  } else if (!old_context_focused && context_focused_) {
    GetEngine()->FocusIn();
    OnCaretBoundsChanged(GetTextInputClient());
  }
}

void InputMethodIBus::UpdateContextFocusState() {
  const bool old_context_focused = context_focused_;
  switch (GetTextInputType()) {
    case TEXT_INPUT_TYPE_NONE:
    case TEXT_INPUT_TYPE_PASSWORD:
      context_focused_ = false;
      break;
    default:
      context_focused_ = true;
      break;
  }
  if (!GetEngine())
    return;

  if (old_context_focused && !context_focused_) {
    GetEngine()->FocusOut();
  } else if (!old_context_focused && context_focused_) {
    GetEngine()->FocusIn();
    OnCaretBoundsChanged(GetTextInputClient());
  }
}
