OLD | NEW |
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/views/tab_contents/tab_contents_view_views.h" | 5 #include "chrome/browser/ui/views/tab_contents/tab_contents_view_views.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/time.h" | 9 #include "base/time.h" |
10 #include "chrome/browser/ui/constrained_window.h" | 10 #include "chrome/browser/ui/constrained_window.h" |
11 #include "chrome/browser/ui/constrained_window_tab_helper.h" | 11 #include "chrome/browser/ui/constrained_window_tab_helper.h" |
12 #include "chrome/browser/ui/sad_tab_helper.h" | 12 #include "chrome/browser/ui/sad_tab_helper.h" |
13 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 13 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
14 #include "chrome/browser/ui/views/tab_contents/native_tab_contents_view.h" | 14 #include "chrome/browser/ui/views/tab_contents/native_tab_contents_view.h" |
15 #include "chrome/browser/ui/views/tab_contents/render_view_context_menu_views.h" | 15 #include "chrome/browser/ui/views/tab_contents/render_view_context_menu_views.h" |
16 #include "content/browser/renderer_host/render_view_host_factory.h" | 16 #include "content/browser/renderer_host/render_view_host_factory.h" |
17 #include "content/public/browser/interstitial_page.h" | 17 #include "content/public/browser/interstitial_page.h" |
18 #include "content/public/browser/render_process_host.h" | 18 #include "content/public/browser/render_process_host.h" |
19 #include "content/public/browser/render_view_host.h" | 19 #include "content/public/browser/render_view_host.h" |
20 #include "content/public/browser/render_widget_host_view.h" | 20 #include "content/public/browser/render_widget_host_view.h" |
21 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" |
22 #include "content/public/browser/web_contents_delegate.h" | 22 #include "content/public/browser/web_contents_delegate.h" |
| 23 #include "content/public/browser/web_contents_view_delegate.h" |
23 #include "ui/gfx/screen.h" | 24 #include "ui/gfx/screen.h" |
24 #include "ui/views/focus/focus_manager.h" | 25 #include "ui/views/focus/focus_manager.h" |
25 #include "ui/views/focus/view_storage.h" | 26 #include "ui/views/focus/view_storage.h" |
26 #include "ui/views/widget/native_widget.h" | 27 #include "ui/views/widget/native_widget.h" |
27 #include "ui/views/widget/widget.h" | 28 #include "ui/views/widget/widget.h" |
28 | 29 |
29 #if defined(OS_WIN) | 30 #if defined(OS_WIN) |
30 #include <windows.h> | 31 #include <windows.h> |
31 #endif | 32 #endif |
32 | 33 |
33 using WebKit::WebDragOperation; | 34 using WebKit::WebDragOperation; |
34 using WebKit::WebDragOperationNone; | 35 using WebKit::WebDragOperationNone; |
35 using WebKit::WebDragOperationsMask; | 36 using WebKit::WebDragOperationsMask; |
36 using WebKit::WebInputEvent; | 37 using WebKit::WebInputEvent; |
37 using content::RenderViewHost; | 38 using content::RenderViewHost; |
38 using content::RenderWidgetHostView; | 39 using content::RenderWidgetHostView; |
39 using content::WebContents; | 40 using content::WebContents; |
| 41 using content::WebContentsViewDelegate; |
40 | 42 |
41 TabContentsViewViews::TabContentsViewViews(WebContents* web_contents) | 43 TabContentsViewViews::TabContentsViewViews(WebContents* web_contents, |
| 44 WebContentsViewDelegate* delegate) |
42 : web_contents_(web_contents), | 45 : web_contents_(web_contents), |
43 native_tab_contents_view_(NULL), | 46 native_tab_contents_view_(NULL), |
44 close_tab_after_drag_ends_(false) { | 47 close_tab_after_drag_ends_(false), |
| 48 delegate_(delegate) { |
45 last_focused_view_storage_id_ = | 49 last_focused_view_storage_id_ = |
46 views::ViewStorage::GetInstance()->CreateStorageID(); | 50 views::ViewStorage::GetInstance()->CreateStorageID(); |
47 } | 51 } |
48 | 52 |
49 TabContentsViewViews::~TabContentsViewViews() { | 53 TabContentsViewViews::~TabContentsViewViews() { |
50 // Makes sure to remove any stored view we may still have in the ViewStorage. | 54 // Makes sure to remove any stored view we may still have in the ViewStorage. |
51 // | 55 // |
52 // It is possible the view went away before us, so we only do this if the | 56 // It is possible the view went away before us, so we only do this if the |
53 // view is registered. | 57 // view is registered. |
54 views::ViewStorage* view_storage = views::ViewStorage::GetInstance(); | 58 views::ViewStorage* view_storage = views::ViewStorage::GetInstance(); |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 this, &TabContentsViewViews::CloseTab); | 394 this, &TabContentsViewViews::CloseTab); |
391 } | 395 } |
392 web_contents_->SystemDragEnded(); | 396 web_contents_->SystemDragEnded(); |
393 } | 397 } |
394 | 398 |
395 views::internal::NativeWidgetDelegate* | 399 views::internal::NativeWidgetDelegate* |
396 TabContentsViewViews::AsNativeWidgetDelegate() { | 400 TabContentsViewViews::AsNativeWidgetDelegate() { |
397 return this; | 401 return this; |
398 } | 402 } |
399 | 403 |
| 404 content::WebDragDestDelegate* TabContentsViewViews::GetDragDestDelegate() { |
| 405 if (delegate_.get()) |
| 406 return delegate_->GetDragDestDelegate(); |
| 407 return NULL; |
| 408 } |
| 409 |
400 //////////////////////////////////////////////////////////////////////////////// | 410 //////////////////////////////////////////////////////////////////////////////// |
401 // TabContentsViewViews, views::Widget overrides: | 411 // TabContentsViewViews, views::Widget overrides: |
402 | 412 |
403 void TabContentsViewViews::OnNativeWidgetVisibilityChanged(bool visible) { | 413 void TabContentsViewViews::OnNativeWidgetVisibilityChanged(bool visible) { |
404 views::Widget::OnNativeWidgetVisibilityChanged(visible); | 414 views::Widget::OnNativeWidgetVisibilityChanged(visible); |
405 if (visible) { | 415 if (visible) { |
406 web_contents_->ShowContents(); | 416 web_contents_->ShowContents(); |
407 } else { | 417 } else { |
408 web_contents_->HideContents(); | 418 web_contents_->HideContents(); |
409 } | 419 } |
410 } | 420 } |
411 | 421 |
412 void TabContentsViewViews::OnNativeWidgetSizeChanged( | 422 void TabContentsViewViews::OnNativeWidgetSizeChanged( |
413 const gfx::Size& new_size) { | 423 const gfx::Size& new_size) { |
414 views::Widget* sad_tab = GetSadTab(); | 424 views::Widget* sad_tab = GetSadTab(); |
415 if (sad_tab) | 425 if (sad_tab) |
416 sad_tab->SetBounds(gfx::Rect(new_size)); | 426 sad_tab->SetBounds(gfx::Rect(new_size)); |
417 views::Widget::OnNativeWidgetSizeChanged(new_size); | 427 views::Widget::OnNativeWidgetSizeChanged(new_size); |
418 } | 428 } |
OLD | NEW |