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

Side by Side Diff: chrome/browser/tab_contents/web_contents_view_win.cc

Issue 19632: Make WebContentsView portable by using the native view types. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 11 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
« no previous file with comments | « chrome/browser/tab_contents/web_contents_view_win.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/tab_contents/web_contents_view_win.h" 5 #include "chrome/browser/tab_contents/web_contents_view_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 8
9 #include "chrome/browser/bookmarks/bookmark_drag_data.h" 9 #include "chrome/browser/bookmarks/bookmark_drag_data.h"
10 #include "chrome/browser/browser.h" // TODO(beng): this dependency is awful. 10 #include "chrome/browser/browser.h" // TODO(beng): this dependency is awful.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 RenderWidgetHostViewWin* WebContentsViewWin::CreateViewForWidget( 66 RenderWidgetHostViewWin* WebContentsViewWin::CreateViewForWidget(
67 RenderWidgetHost* render_widget_host) { 67 RenderWidgetHost* render_widget_host) {
68 DCHECK(!render_widget_host->view()); 68 DCHECK(!render_widget_host->view());
69 RenderWidgetHostViewWin* view = 69 RenderWidgetHostViewWin* view =
70 new RenderWidgetHostViewWin(render_widget_host); 70 new RenderWidgetHostViewWin(render_widget_host);
71 view->Create(GetHWND()); 71 view->Create(GetHWND());
72 view->ShowWindow(SW_SHOW); 72 view->ShowWindow(SW_SHOW);
73 return view; 73 return view;
74 } 74 }
75 75
76 HWND WebContentsViewWin::GetContainerHWND() const { 76 gfx::NativeView WebContentsViewWin::GetNativeView() const {
77 return GetHWND(); 77 return GetHWND();
78 } 78 }
79 79
80 HWND WebContentsViewWin::GetContentHWND() const { 80 gfx::NativeView WebContentsViewWin::GetContentNativeView() const {
81 if (!web_contents_->render_widget_host_view()) 81 if (!web_contents_->render_widget_host_view())
82 return NULL; 82 return NULL;
83 return web_contents_->render_widget_host_view()->GetPluginHWND(); 83 return web_contents_->render_widget_host_view()->GetPluginHWND();
84 } 84 }
85 85
86 void WebContentsViewWin::GetContainerBounds(gfx::Rect* out) const { 86 void WebContentsViewWin::GetContainerBounds(gfx::Rect* out) const {
87 GetBounds(out, false); 87 GetBounds(out, false);
88 } 88 }
89 89
90 void WebContentsViewWin::StartDragging(const WebDropData& drop_data) { 90 void WebContentsViewWin::StartDragging(const WebDropData& drop_data) {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 } 165 }
166 166
167 void WebContentsViewWin::OnDestroy() { 167 void WebContentsViewWin::OnDestroy() {
168 if (drop_target_.get()) { 168 if (drop_target_.get()) {
169 RevokeDragDrop(GetHWND()); 169 RevokeDragDrop(GetHWND());
170 drop_target_ = NULL; 170 drop_target_ = NULL;
171 } 171 }
172 } 172 }
173 173
174 void WebContentsViewWin::SetPageTitle(const std::wstring& title) { 174 void WebContentsViewWin::SetPageTitle(const std::wstring& title) {
175 if (GetContainerHWND()) { 175 if (GetNativeView()) {
176 // It's possible to get this after the hwnd has been destroyed. 176 // It's possible to get this after the hwnd has been destroyed.
177 ::SetWindowText(GetContainerHWND(), title.c_str()); 177 ::SetWindowText(GetNativeView(), title.c_str());
178 // TODO(brettw) this call seems messy the way it reaches into the widget 178 // TODO(brettw) this call seems messy the way it reaches into the widget
179 // view, and I'm not sure it's necessary. Maybe we should just remove it. 179 // view, and I'm not sure it's necessary. Maybe we should just remove it.
180 ::SetWindowText(web_contents_->render_widget_host_view()->GetPluginHWND(), 180 ::SetWindowText(web_contents_->render_widget_host_view()->GetPluginHWND(),
181 title.c_str()); 181 title.c_str());
182 } 182 }
183 } 183 }
184 184
185 void WebContentsViewWin::Invalidate() { 185 void WebContentsViewWin::Invalidate() {
186 // Note that it's possible to get this message after the window was destroyed. 186 // Note that it's possible to get this message after the window was destroyed.
187 if (::IsWindow(GetContainerHWND())) 187 if (::IsWindow(GetNativeView()))
188 InvalidateRect(GetContainerHWND(), NULL, FALSE); 188 InvalidateRect(GetNativeView(), NULL, FALSE);
189 } 189 }
190 190
191 void WebContentsViewWin::SizeContents(const gfx::Size& size) { 191 void WebContentsViewWin::SizeContents(const gfx::Size& size) {
192 // TODO(brettw) this is a hack and should be removed. See web_contents_view.h. 192 // TODO(brettw) this is a hack and should be removed. See web_contents_view.h.
193 WasSized(size); 193 WasSized(size);
194 } 194 }
195 195
196 void WebContentsViewWin::FindInPage(const Browser& browser, 196 void WebContentsViewWin::FindInPage(const Browser& browser,
197 bool find_next, bool forward_direction) { 197 bool find_next, bool forward_direction) {
198 if (!find_bar_.get()) { 198 if (!find_bar_.get()) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 *fully_visible = find_bar_->IsVisible() && !find_bar_->IsAnimating(); 238 *fully_visible = find_bar_->IsVisible() && !find_bar_->IsAnimating();
239 return true; 239 return true;
240 } 240 }
241 241
242 void WebContentsViewWin::UpdateDragCursor(bool is_drop_target) { 242 void WebContentsViewWin::UpdateDragCursor(bool is_drop_target) {
243 drop_target_->set_is_drop_target(is_drop_target); 243 drop_target_->set_is_drop_target(is_drop_target);
244 } 244 }
245 245
246 void WebContentsViewWin::TakeFocus(bool reverse) { 246 void WebContentsViewWin::TakeFocus(bool reverse) {
247 views::FocusManager* focus_manager = 247 views::FocusManager* focus_manager =
248 views::FocusManager::GetFocusManager(GetContainerHWND()); 248 views::FocusManager::GetFocusManager(GetNativeView());
249 249
250 // We may not have a focus manager if the tab has been switched before this 250 // We may not have a focus manager if the tab has been switched before this
251 // message arrived. 251 // message arrived.
252 if (focus_manager) 252 if (focus_manager)
253 focus_manager->AdvanceFocus(reverse); 253 focus_manager->AdvanceFocus(reverse);
254 } 254 }
255 255
256 void WebContentsViewWin::HandleKeyboardEvent(const WebKeyboardEvent& event) { 256 void WebContentsViewWin::HandleKeyboardEvent(const WebKeyboardEvent& event) {
257 // Previous calls to TranslateMessage can generate CHAR events as well as 257 // Previous calls to TranslateMessage can generate CHAR events as well as
258 // KEY_DOWN events, even if the latter triggered an accelerator. In these 258 // KEY_DOWN events, even if the latter triggered an accelerator. In these
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 408
409 RenderWidgetHost* widget_host = widget_host_view->GetRenderWidgetHost(); 409 RenderWidgetHost* widget_host = widget_host_view->GetRenderWidgetHost();
410 if (!widget_host->process()->channel()) { 410 if (!widget_host->process()->channel()) {
411 // The view has gone away or the renderer crashed. Nothing to do. 411 // The view has gone away or the renderer crashed. Nothing to do.
412 return; 412 return;
413 } 413 }
414 414
415 // This logic should be implemented by RenderWidgetHostHWND (as mentioned 415 // This logic should be implemented by RenderWidgetHostHWND (as mentioned
416 // above) in the ::Init function, which should take a parent and some initial 416 // above) in the ::Init function, which should take a parent and some initial
417 // bounds. 417 // bounds.
418 widget_host_view_win->Create(GetContainerHWND(), NULL, NULL, 418 widget_host_view_win->Create(GetNativeView(), NULL, NULL,
419 WS_POPUP, WS_EX_TOOLWINDOW); 419 WS_POPUP, WS_EX_TOOLWINDOW);
420 widget_host_view_win->MoveWindow(initial_pos.x(), initial_pos.y(), 420 widget_host_view_win->MoveWindow(initial_pos.x(), initial_pos.y(),
421 initial_pos.width(), initial_pos.height(), 421 initial_pos.width(), initial_pos.height(),
422 TRUE); 422 TRUE);
423 widget_host_view_win->ShowWindow(widget_host_view_win->activatable() ? 423 widget_host_view_win->ShowWindow(widget_host_view_win->activatable() ?
424 SW_SHOW : SW_SHOWNA); 424 SW_SHOW : SW_SHOWNA);
425 widget_host->Init(); 425 widget_host->Init();
426 } 426 }
427 427
428 void WebContentsViewWin::OnHScroll(int scroll_type, short position, 428 void WebContentsViewWin::OnHScroll(int scroll_type, short position,
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 // here since the view will draw everything correctly. 582 // here since the view will draw everything correctly.
583 } 583 }
584 584
585 void WebContentsViewWin::ScrollCommon(UINT message, int scroll_type, 585 void WebContentsViewWin::ScrollCommon(UINT message, int scroll_type,
586 short position, HWND scrollbar) { 586 short position, HWND scrollbar) {
587 // This window can receive scroll events as a result of the ThinkPad's 587 // This window can receive scroll events as a result of the ThinkPad's
588 // Trackpad scroll wheel emulation. 588 // Trackpad scroll wheel emulation.
589 if (!ScrollZoom(scroll_type)) { 589 if (!ScrollZoom(scroll_type)) {
590 // Reflect scroll message to the view() to give it a chance 590 // Reflect scroll message to the view() to give it a chance
591 // to process scrolling. 591 // to process scrolling.
592 SendMessage(GetContentHWND(), message, MAKELONG(scroll_type, position), 592 SendMessage(GetContentNativeView(), message,
593 (LPARAM) scrollbar); 593 MAKELONG(scroll_type, position),
594 reinterpret_cast<LPARAM>(scrollbar));
594 } 595 }
595 } 596 }
596 597
597 void WebContentsViewWin::WasHidden() { 598 void WebContentsViewWin::WasHidden() {
598 web_contents_->HideContents(); 599 web_contents_->HideContents();
599 if (find_bar_.get()) 600 if (find_bar_.get())
600 find_bar_->DidBecomeUnselected(); 601 find_bar_->DidBecomeUnselected();
601 } 602 }
602 603
603 void WebContentsViewWin::WasShown() { 604 void WebContentsViewWin::WasShown() {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 } 649 }
649 return false; 650 return false;
650 } 651 }
651 652
652 void WebContentsViewWin::WheelZoom(int distance) { 653 void WebContentsViewWin::WheelZoom(int distance) {
653 if (web_contents_->delegate()) { 654 if (web_contents_->delegate()) {
654 bool zoom_in = distance > 0; 655 bool zoom_in = distance > 0;
655 web_contents_->delegate()->ContentsZoomChange(zoom_in); 656 web_contents_->delegate()->ContentsZoomChange(zoom_in);
656 } 657 }
657 } 658 }
OLDNEW
« no previous file with comments | « chrome/browser/tab_contents/web_contents_view_win.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698