 Chromium Code Reviews
 Chromium Code Reviews Issue 2805763004:
  [System-Keyboard-Lock] Forward navigator functions to RenderFrameHost  (Closed)
    
  
    Issue 2805763004:
  [System-Keyboard-Lock] Forward navigator functions to RenderFrameHost  (Closed) 
  | 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(); | 
| } |