Chromium Code Reviews| 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(); |
| } |