Commit 732d06ba authored by John Williams's avatar John Williams Committed by Commit Bot

[Cast MRP] Workaround for DCHECK failure when attempting to cast.

CastDialogSinkButton::RequestFocus is called recursively, resulting
in a DCHECK failure.  As a workaround, this function now detects
when it is called recursively and aborts prematurely.

Change-Id: I4847f862868ef9c15ed0ca6cd54cb36cc559a901
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1488581
Commit-Queue: John Williams <jrw@chromium.org>
Reviewed-by: default avatarTakumi Fujimoto <takumif@chromium.org>
Cr-Commit-Position: refs/heads/master@{#660949}
parent b7376e9a
......@@ -4,6 +4,9 @@
#include "chrome/browser/ui/views/media_router/cast_dialog_sink_button.h"
#include <memory>
#include "base/debug/stack_trace.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/ui/views/chrome_layout_provider.h"
......@@ -12,6 +15,7 @@
#include "chrome/common/media_router/issue.h"
#include "chrome/grit/generated_resources.h"
#include "components/vector_icons/vector_icons.h"
#include "content/public/browser/browser_thread.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/ui_base_types.h"
#include "ui/gfx/color_palette.h"
......@@ -198,6 +202,15 @@ void CastDialogSinkButton::OnEnabledChanged() {
}
void CastDialogSinkButton::RequestFocus() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
static bool requesting_focus = false;
if (requesting_focus) {
// TODO(jrw): Figure out why this happens.
DLOG(ERROR) << "Recursive call to RequestFocus\n"
<< base::debug::StackTrace();
return;
}
requesting_focus = true;
if (GetEnabled()) {
HoverButton::RequestFocus();
} else {
......@@ -205,6 +218,7 @@ void CastDialogSinkButton::RequestFocus() {
// want focus.
icon_view()->RequestFocus();
}
requesting_focus = false;
}
void CastDialogSinkButton::OnFocus() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment