Home | History | Annotate | Download | only in renderer_host
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "content/public/browser/native_web_keyboard_event.h"
      6 
      7 #include <gdk/gdk.h>
      8 
      9 #include "third_party/WebKit/public/web/gtk/WebInputEventFactory.h"
     10 
     11 using WebKit::WebInputEventFactory;
     12 
     13 namespace {
     14 
     15 void CopyEventTo(gfx::NativeEvent in, gfx::NativeEvent* out) {
     16   *out = in ? gdk_event_copy(in) : NULL;
     17 }
     18 
     19 void FreeEvent(gfx::NativeEvent event) {
     20   if (event)
     21     gdk_event_free(event);
     22 }
     23 
     24 }  // namespace
     25 
     26 namespace content {
     27 
     28 NativeWebKeyboardEvent::NativeWebKeyboardEvent()
     29     : os_event(NULL),
     30       skip_in_browser(false),
     31       match_edit_command(false) {
     32 }
     33 
     34 NativeWebKeyboardEvent::NativeWebKeyboardEvent(gfx::NativeEvent native_event)
     35     : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(&native_event->key)),
     36       skip_in_browser(false),
     37       match_edit_command(false) {
     38   CopyEventTo(native_event, &os_event);
     39 }
     40 
     41 NativeWebKeyboardEvent::NativeWebKeyboardEvent(wchar_t character,
     42                                                int state,
     43                                                double time_stamp_seconds)
     44     : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(character,
     45                                                            state,
     46                                                            time_stamp_seconds)),
     47       os_event(NULL),
     48       skip_in_browser(false),
     49       match_edit_command(false) {
     50 }
     51 
     52 NativeWebKeyboardEvent::NativeWebKeyboardEvent(
     53     const NativeWebKeyboardEvent& other)
     54     : WebKeyboardEvent(other),
     55       skip_in_browser(other.skip_in_browser),
     56       match_edit_command(other.match_edit_command) {
     57   CopyEventTo(other.os_event, &os_event);
     58 }
     59 
     60 NativeWebKeyboardEvent& NativeWebKeyboardEvent::operator=(
     61     const NativeWebKeyboardEvent& other) {
     62   WebKeyboardEvent::operator=(other);
     63 
     64   FreeEvent(os_event);
     65   CopyEventTo(other.os_event, &os_event);
     66 
     67   skip_in_browser = other.skip_in_browser;
     68   match_edit_command = other.match_edit_command;
     69 
     70   return *this;
     71 }
     72 
     73 NativeWebKeyboardEvent::~NativeWebKeyboardEvent() {
     74   FreeEvent(os_event);
     75 }
     76 
     77 }  // namespace content
     78