Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(693)

Unified Diff: chrome/browser/ui/autofill/popup_controller_common.cc

Issue 2762233004: Fix autofill popup controller key press callback registration (Closed)
Patch Set: Handle null RenderWidgetHostView gracefully Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/autofill/popup_controller_common.cc
diff --git a/chrome/browser/ui/autofill/popup_controller_common.cc b/chrome/browser/ui/autofill/popup_controller_common.cc
index 2c97b8b7c222c6fb58f61eebf43f28da21da1208..964f25bad9575cbbfa34bc384fada0837e63dfc5 100644
--- a/chrome/browser/ui/autofill/popup_controller_common.cc
+++ b/chrome/browser/ui/autofill/popup_controller_common.cc
@@ -4,11 +4,27 @@
#include "chrome/browser/ui/autofill/popup_controller_common.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents.h"
namespace autofill {
+namespace {
+
+content::RenderWidgetHost* KeyPressHandlingTarget(
Mathieu 2017/03/26 02:03:51 since it's in the anonymous namespace, a short fun
vabr (Chromium) 2017/03/26 03:25:40 Done.
+ content::WebContents* web_contents) {
+ content::RenderFrameHost* frame = web_contents->GetFocusedFrame();
+ if (!frame)
+ frame = web_contents->GetMainFrame();
+ content::RenderWidgetHostView* view = frame->GetView();
+ if (!view)
+ return nullptr;
Mathieu 2017/03/26 02:03:51 this is a sure crash on line 50, no?
vabr (Chromium) 2017/03/26 03:25:40 For some reason I only saw the view being null dur
+ return view->GetRenderWidgetHost();
+}
+
+} // namespace
+
PopupControllerCommon::PopupControllerCommon(
const gfx::RectF& element_bounds,
base::i18n::TextDirection text_direction,
@@ -30,18 +46,17 @@ void PopupControllerCommon::SetKeyPressCallback(
void PopupControllerCommon::RegisterKeyPressCallback() {
if (web_contents_ && !key_press_event_target_) {
- key_press_event_target_ = web_contents_->GetRenderViewHost();
- key_press_event_target_->GetWidget()->AddKeyPressEventCallback(
+ key_press_event_target_ = KeyPressHandlingTarget(web_contents_);
+ key_press_event_target_->AddKeyPressEventCallback(
key_press_event_callback_);
}
}
void PopupControllerCommon::RemoveKeyPressCallback() {
if (web_contents_ && (!web_contents_->IsBeingDestroyed()) &&
- key_press_event_target_ == web_contents_->GetRenderViewHost()) {
- web_contents_->GetRenderViewHost()
- ->GetWidget()
- ->RemoveKeyPressEventCallback(key_press_event_callback_);
+ key_press_event_target_ == KeyPressHandlingTarget(web_contents_)) {
+ key_press_event_target_->RemoveKeyPressEventCallback(
+ key_press_event_callback_);
}
key_press_event_target_ = NULL;
}

Powered by Google App Engine
This is Rietveld 408576698