Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 9cfedcf3d3cd1f8e59ae3c803f5cd51dda910520..2e2a84c92d18229918ad87443b89367b5b249e53 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -4,6 +4,8 @@ |
#include "content/renderer/render_frame_impl.h" |
+#include <iostream> |
whywhat
2017/04/11 14:52:33
nit: don't think this is used
out of curiosity, di
Hzj_jie
2017/04/12 02:51:05
Sorry, it's for debugging purpose, and I forgot to
|
+ |
#include <map> |
#include <string> |
#include <utility> |
@@ -11,6 +13,7 @@ |
#include "base/auto_reset.h" |
#include "base/bind_helpers.h" |
+#include "base/callback_forward.h" |
#include "base/command_line.h" |
#include "base/debug/alias.h" |
#include "base/debug/asan_invalid_access.h" |
@@ -307,6 +310,7 @@ using blink::WebFrameSerializer; |
using blink::WebFrameSerializerClient; |
using blink::WebHistoryItem; |
using blink::WebHTTPBody; |
+using blink::WebKeyLockRequestCompletion; |
using blink::WebLocalFrame; |
using blink::WebMediaPlayer; |
using blink::WebMediaPlayerClient; |
@@ -6811,6 +6815,29 @@ blink::WebPageVisibilityState RenderFrameImpl::VisibilityState() const { |
return current_state; |
} |
+void RenderFrameImpl::RequestKeyLock(const WebVector<WebString>& key_codes, |
+ WebKeyLockRequestCompletion* completion) { |
+ std::vector<std::string> std_key_codes; |
+ for (const auto& key_code : key_codes) { |
+ // KeyboardEvent.code should be used; keys should be represented by latin |
+ // characters. |
+ std_key_codes.push_back(key_code.Latin1()); |
+ } |
+ frame_host_->RequestKeyLock( |
+ std_key_codes, base::Bind( |
+ [](WebKeyLockRequestCompletion* completion, |
+ bool allowed, const base::string16& reason) { |
+ completion->DidCompleteRequest( |
+ allowed, WebString::FromUTF16(reason)); |
+ }, |
+ base::Unretained(completion))); |
+} |
+ |
+void RenderFrameImpl::CancelKeyLock() { |
+ // The callback is not forwarded to web page. |
+ frame_host_->CancelKeyLock(base::Bind([] {})); |
+} |
+ |
blink::WebPageVisibilityState RenderFrameImpl::GetVisibilityState() const { |
return VisibilityState(); |
} |