Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_view_mac.mm

Issue 363233002: Abstract base 'ExtensionView' to Fix DEPS violation in extension_view_host.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase for r281699 (unused hwnd_util.h) Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/cocoa/extensions/extension_view_mac.h"
6
5 #import <Cocoa/Cocoa.h> 7 #import <Cocoa/Cocoa.h>
6 8
7 #include "chrome/browser/ui/cocoa/extensions/extension_view_mac.h" 9 #include "base/mac/foundation_util.h"
8 10 #include "chrome/browser/extensions/extension_view_host.h"
11 #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h"
9 #include "content/public/browser/render_view_host.h" 12 #include "content/public/browser/render_view_host.h"
10 #include "content/public/browser/render_widget_host_view.h" 13 #include "content/public/browser/render_widget_host_view.h"
11 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
12 #include "extensions/browser/extension_host.h" 15 #include "extensions/browser/extension_host.h"
13 #include "extensions/common/view_type.h" 16 #include "extensions/common/view_type.h"
14 17
15 // The minimum/maximum dimensions of the popup. 18 // The minimum/maximum dimensions of the popup.
16 const CGFloat ExtensionViewMac::kMinWidth = 25.0; 19 const CGFloat ExtensionViewMac::kMinWidth = 25.0;
17 const CGFloat ExtensionViewMac::kMinHeight = 25.0; 20 const CGFloat ExtensionViewMac::kMinHeight = 25.0;
18 const CGFloat ExtensionViewMac::kMaxWidth = 800.0; 21 const CGFloat ExtensionViewMac::kMaxWidth = 800.0;
19 const CGFloat ExtensionViewMac::kMaxHeight = 600.0; 22 const CGFloat ExtensionViewMac::kMaxHeight = 600.0;
20 23
21 ExtensionViewMac::ExtensionViewMac(extensions::ExtensionHost* extension_host, 24 ExtensionViewMac::ExtensionViewMac(extensions::ExtensionHost* extension_host,
22 Browser* browser) 25 Browser* browser)
23 : browser_(browser), 26 : browser_(browser),
24 extension_host_(extension_host), 27 extension_host_(extension_host),
25 container_(NULL) { 28 container_(NULL) {
26 DCHECK(extension_host_); 29 DCHECK(extension_host_);
27 [native_view() setHidden:YES]; 30 [GetNativeView() setHidden:YES];
28 } 31 }
29 32
30 ExtensionViewMac::~ExtensionViewMac() { 33 ExtensionViewMac::~ExtensionViewMac() {
31 } 34 }
32 35
36 void ExtensionViewMac::WindowFrameChanged() {
37 if (render_view_host()->GetView())
38 render_view_host()->GetView()->WindowFrameChanged();
39 }
40
33 void ExtensionViewMac::Init() { 41 void ExtensionViewMac::Init() {
34 CreateWidgetHostView(); 42 CreateWidgetHostView();
35 } 43 }
36 44
37 gfx::NativeView ExtensionViewMac::native_view() { 45 Browser* ExtensionViewMac::GetBrowser() {
46 return browser_;
47 }
48
49 gfx::NativeView ExtensionViewMac::GetNativeView() {
38 return extension_host_->host_contents()->GetNativeView(); 50 return extension_host_->host_contents()->GetNativeView();
39 } 51 }
40 52
41 content::RenderViewHost* ExtensionViewMac::render_view_host() const {
42 return extension_host_->render_view_host();
43 }
44
45 void ExtensionViewMac::DidStopLoading() {
46 ShowIfCompletelyLoaded();
47 }
48
49 void ExtensionViewMac::ResizeDueToAutoResize(const gfx::Size& new_size) { 53 void ExtensionViewMac::ResizeDueToAutoResize(const gfx::Size& new_size) {
50 if (container_) 54 if (container_)
51 container_->OnExtensionSizeChanged(this, new_size); 55 container_->OnExtensionSizeChanged(this, new_size);
52 } 56 }
53 57
54 void ExtensionViewMac::RenderViewCreated() { 58 void ExtensionViewMac::RenderViewCreated() {
55 extensions::ViewType host_type = extension_host_->extension_host_type(); 59 extensions::ViewType host_type = extension_host_->extension_host_type();
56 if (host_type == extensions::VIEW_TYPE_EXTENSION_POPUP) { 60 if (host_type == extensions::VIEW_TYPE_EXTENSION_POPUP) {
57 gfx::Size min_size(ExtensionViewMac::kMinWidth, 61 gfx::Size min_size(ExtensionViewMac::kMinWidth,
58 ExtensionViewMac::kMinHeight); 62 ExtensionViewMac::kMinHeight);
59 gfx::Size max_size(ExtensionViewMac::kMaxWidth, 63 gfx::Size max_size(ExtensionViewMac::kMaxWidth,
60 ExtensionViewMac::kMaxHeight); 64 ExtensionViewMac::kMaxHeight);
61 render_view_host()->EnableAutoResize(min_size, max_size); 65 render_view_host()->EnableAutoResize(min_size, max_size);
62 } 66 }
63 } 67 }
64 68
65 void ExtensionViewMac::WindowFrameChanged() { 69 void ExtensionViewMac::HandleKeyboardEvent(
66 if (render_view_host()->GetView()) 70 content::WebContents* source,
67 render_view_host()->GetView()->WindowFrameChanged(); 71 const content::NativeWebKeyboardEvent& event) {
72 if (event.skip_in_browser ||
73 event.type == content::NativeWebKeyboardEvent::Char ||
74 extension_host_->extension_host_type() !=
75 extensions::VIEW_TYPE_EXTENSION_POPUP)
76 return;
77
78 ChromeEventProcessingWindow* event_window =
79 base::mac::ObjCCastStrict<ChromeEventProcessingWindow>(
80 [GetNativeView() window]);
81 [event_window redispatchKeyEvent:event.os_event];
82 }
83
84 void ExtensionViewMac::DidStopLoading() {
85 ShowIfCompletelyLoaded();
86 }
87
88 content::RenderViewHost* ExtensionViewMac::render_view_host() const {
89 return extension_host_->render_view_host();
68 } 90 }
69 91
70 void ExtensionViewMac::CreateWidgetHostView() { 92 void ExtensionViewMac::CreateWidgetHostView() {
71 extension_host_->CreateRenderViewSoon(); 93 extension_host_->CreateRenderViewSoon();
72 } 94 }
73 95
74 void ExtensionViewMac::ShowIfCompletelyLoaded() { 96 void ExtensionViewMac::ShowIfCompletelyLoaded() {
75 // We wait to show the ExtensionView until it has loaded, and the view has 97 // We wait to show the ExtensionView until it has loaded, and the view has
76 // actually been created. These can happen in different orders. 98 // actually been created. These can happen in different orders.
77 if (extension_host_->did_stop_loading()) { 99 if (extension_host_->did_stop_loading()) {
78 [native_view() setHidden:NO]; 100 [GetNativeView() setHidden:NO];
79 if (container_) 101 if (container_)
80 container_->OnExtensionViewDidShow(this); 102 container_->OnExtensionViewDidShow(this);
81 } 103 }
82 } 104 }
105
106 namespace extensions {
107
108 // static
109 scoped_ptr<ExtensionView> ExtensionViewHost::CreateExtensionView(
110 ExtensionViewHost* host,
111 Browser* browser) {
112 scoped_ptr<ExtensionViewMac> view(new ExtensionViewMac(host, browser));
113 return view.PassAs<ExtensionView>();
114 }
115
116 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698