diff --git a/brightray/brightray.gyp b/brightray/brightray.gyp index 2a776b24fa..28fcf6603e 100644 --- a/brightray/brightray.gyp +++ b/brightray/brightray.gyp @@ -23,6 +23,9 @@ 'browser/browser_main_parts.cc', 'browser/browser_main_parts.h', 'browser/browser_main_parts_mac.mm', + 'browser/default_web_contents_delegate.cc', + 'browser/default_web_contents_delegate.h', + 'browser/default_web_contents_delegate_mac.mm', 'browser/devtools_delegate.cc', 'browser/devtools_delegate.h', 'browser/devtools_frontend.cc', diff --git a/brightray/browser/default_web_contents_delegate.cc b/brightray/browser/default_web_contents_delegate.cc new file mode 100644 index 0000000000..967881efb7 --- /dev/null +++ b/brightray/browser/default_web_contents_delegate.cc @@ -0,0 +1,11 @@ +#include "browser/default_web_contents_delegate.h" + +namespace brightray { + +DefaultWebContentsDelegate::DefaultWebContentsDelegate() { +} + +DefaultWebContentsDelegate::~DefaultWebContentsDelegate() { +} + +} diff --git a/brightray/browser/default_web_contents_delegate.h b/brightray/browser/default_web_contents_delegate.h new file mode 100644 index 0000000000..8ec70c316b --- /dev/null +++ b/brightray/browser/default_web_contents_delegate.h @@ -0,0 +1,21 @@ +#ifndef BRIGHTRAY_BROWSER_DEFAULT_WEB_CONTENTS_DELEGATE_H_ +#define BRIGHTRAY_BROWSER_DEFAULT_WEB_CONTENTS_DELEGATE_H_ + +#include "content/public/browser/web_contents_delegate.h" + +namespace brightray { + +// This class provides some sane default behaviors to any content::WebContents instance (e.g., +// keyboard shortcut handling on Mac). +class DefaultWebContentsDelegate : public content::WebContentsDelegate { +public: + DefaultWebContentsDelegate(); + ~DefaultWebContentsDelegate(); + +protected: + virtual void HandleKeyboardEvent(content::WebContents*, const content::NativeWebKeyboardEvent&) OVERRIDE; +}; + +} + +#endif diff --git a/brightray/browser/default_web_contents_delegate_mac.mm b/brightray/browser/default_web_contents_delegate_mac.mm new file mode 100644 index 0000000000..78760614cb --- /dev/null +++ b/brightray/browser/default_web_contents_delegate_mac.mm @@ -0,0 +1,15 @@ +#import "browser/default_web_contents_delegate.h" + +#import "content/public/browser/native_web_keyboard_event.h" +#import + +namespace brightray { + +void DefaultWebContentsDelegate::HandleKeyboardEvent(content::WebContents*, const content::NativeWebKeyboardEvent& event) { + if (event.skip_in_browser) + return; + + [[NSApp mainMenu] performKeyEquivalent:event.os_event]; +} + +} \ No newline at end of file