| Index: chrome/renderer/extensions/messaging_bindings.cc
|
| diff --git a/chrome/renderer/extensions/messaging_bindings.cc b/chrome/renderer/extensions/messaging_bindings.cc
|
| index 4e273b72e4502d9b1b5c91be0ff57d19191f663c..00dad22bc4ce190aee1ee1f297e368b9275a4a6c 100644
|
| --- a/chrome/renderer/extensions/messaging_bindings.cc
|
| +++ b/chrome/renderer/extensions/messaging_bindings.cc
|
| @@ -31,6 +31,7 @@
|
| #include "third_party/WebKit/public/web/WebScopedUserGesture.h"
|
| #include "third_party/WebKit/public/web/WebScopedWindowFocusAllowedIndicator.h"
|
| #include "third_party/WebKit/public/web/WebUserGestureIndicator.h"
|
| +#include "third_party/WebKit/public/web/WebUserGestureToken.h"
|
| #include "v8/include/v8.h"
|
|
|
| // Message passing API example (in a content script):
|
| @@ -120,10 +121,19 @@ class ExtensionImpl : public ChromeV8Extension {
|
| return;
|
| }
|
|
|
| + bool user_gesture =
|
| + blink::WebUserGestureIndicator::isProcessingUserGesture();
|
| + double user_gesture_timestamp = 0.0;
|
| + if (user_gesture) {
|
| + user_gesture_timestamp =
|
| + blink::WebUserGestureIndicator::currentUserGestureToken().timestamp();
|
| + }
|
| renderview->Send(new ExtensionHostMsg_PostMessage(
|
| - renderview->GetRoutingID(), port_id,
|
| + renderview->GetRoutingID(),
|
| + port_id,
|
| Message(*v8::String::Utf8Value(args[1]),
|
| - blink::WebUserGestureIndicator::isProcessingUserGesture())));
|
| + user_gesture,
|
| + user_gesture_timestamp)));
|
| }
|
|
|
| // Forcefully disconnects a port.
|
| @@ -353,8 +363,11 @@ void MessagingBindings::DeliverMessage(
|
| scoped_ptr<blink::WebScopedUserGesture> web_user_gesture;
|
| scoped_ptr<blink::WebScopedWindowFocusAllowedIndicator> allow_window_focus;
|
| if (message.user_gesture) {
|
| - web_user_gesture.reset(new blink::WebScopedUserGesture);
|
| - allow_window_focus.reset(new blink::WebScopedWindowFocusAllowedIndicator);
|
| + web_user_gesture.reset(
|
| + new blink::WebScopedUserGesture(message.user_gesture_timestamp));
|
| + if (blink::WebUserGestureIndicator::isProcessingUserGesture()) {
|
| + allow_window_focus.reset(new blink::WebScopedWindowFocusAllowedIndicator);
|
| + }
|
| }
|
|
|
| v8::Isolate* isolate = v8::Isolate::GetCurrent();
|
|
|