Index: chrome/browser/ui/webui/vr_shell/vr_shell_ui_message_handler.cc |
diff --git a/chrome/browser/ui/webui/vr_shell/vr_shell_ui_message_handler.cc b/chrome/browser/ui/webui/vr_shell/vr_shell_ui_message_handler.cc |
index c970d84b09a05184467e30984398c8985f42c988..8975009dada602ea11cf4ef2ff7d9435504f068c 100644 |
--- a/chrome/browser/ui/webui/vr_shell/vr_shell_ui_message_handler.cc |
+++ b/chrome/browser/ui/webui/vr_shell/vr_shell_ui_message_handler.cc |
@@ -10,13 +10,18 @@ |
#include "base/bind_helpers.h" |
#include "base/callback.h" |
#include "base/values.h" |
+#include "chrome/browser/android/vr_shell/ui_interface.h" |
#include "chrome/browser/android/vr_shell/ui_scene.h" |
#include "chrome/browser/android/vr_shell/vr_shell.h" |
#include "content/public/browser/web_ui.h" |
VrShellUIMessageHandler::VrShellUIMessageHandler() = default; |
-VrShellUIMessageHandler::~VrShellUIMessageHandler() = default; |
+VrShellUIMessageHandler::~VrShellUIMessageHandler() { |
+ if (vr_shell_) { |
+ vr_shell_->GetUiInterface()->SetUiMessageHandler(nullptr); |
+ } |
+} |
void VrShellUIMessageHandler::RegisterMessages() { |
vr_shell_ = vr_shell::VrShell::GetWeakPtr(web_ui()->GetWebContents()); |
@@ -33,9 +38,12 @@ void VrShellUIMessageHandler::RegisterMessages() { |
} |
void VrShellUIMessageHandler::HandleDomLoaded(const base::ListValue* args) { |
- if (!vr_shell_) |
- return; |
+ AllowJavascript(); |
+} |
+void VrShellUIMessageHandler::OnJavascriptAllowed() { |
+ CHECK(vr_shell_); |
+ vr_shell_->GetUiInterface()->SetUiMessageHandler(this); |
vr_shell_->OnDomContentsLoaded(); |
} |
@@ -58,3 +66,7 @@ void VrShellUIMessageHandler::HandleDoAction(const base::ListValue* args) { |
vr_shell_->DoUiAction((vr_shell::UiAction) action); |
} |
} |
+ |
+void VrShellUIMessageHandler::SendCommandToUi(const base::Value& value) { |
+ CallJavascriptFunction("vrShellUi.command", value); |
+} |