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 "ui/views/controls/webview/webview.h" | 5 #include "ui/views/controls/webview/webview.h" |
6 | 6 |
7 #include "content/public/browser/browser_accessibility_state.h" | 7 #include "content/public/browser/browser_accessibility_state.h" |
8 #include "content/public/browser/browser_context.h" | 8 #include "content/public/browser/browser_context.h" |
9 #include "content/public/browser/navigation_controller.h" | 9 #include "content/public/browser/navigation_controller.h" |
10 #include "content/public/browser/render_view_host.h" | 10 #include "content/public/browser/render_view_host.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 } | 51 } |
52 return web_contents(); | 52 return web_contents(); |
53 } | 53 } |
54 | 54 |
55 void WebView::SetWebContents(content::WebContents* replacement) { | 55 void WebView::SetWebContents(content::WebContents* replacement) { |
56 if (replacement == web_contents()) | 56 if (replacement == web_contents()) |
57 return; | 57 return; |
58 DetachWebContents(); | 58 DetachWebContents(); |
59 WebContentsObserver::Observe(replacement); | 59 WebContentsObserver::Observe(replacement); |
60 // web_contents() now returns |replacement| from here onwards. | 60 // web_contents() now returns |replacement| from here onwards. |
| 61 SetFocusable(!!web_contents()); |
61 if (wc_owner_ != replacement) | 62 if (wc_owner_ != replacement) |
62 wc_owner_.reset(); | 63 wc_owner_.reset(); |
63 if (embed_fullscreen_widget_mode_enabled_) { | 64 if (embed_fullscreen_widget_mode_enabled_) { |
64 is_embedding_fullscreen_widget_ = | 65 is_embedding_fullscreen_widget_ = |
65 web_contents() && web_contents()->GetFullscreenRenderWidgetHostView(); | 66 web_contents() && web_contents()->GetFullscreenRenderWidgetHostView(); |
66 } else { | 67 } else { |
67 DCHECK(!is_embedding_fullscreen_widget_); | 68 DCHECK(!is_embedding_fullscreen_widget_); |
68 } | 69 } |
69 AttachWebContents(); | 70 AttachWebContents(); |
70 NotifyMaybeTextInputClientChanged(); | 71 NotifyMaybeTextInputClientChanged(); |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 return FocusManager::IsTabTraversalKeyEvent(event); | 192 return FocusManager::IsTabTraversalKeyEvent(event); |
192 | 193 |
193 // Don't look-up accelerators or tab-traversal if we are showing a non-crashed | 194 // Don't look-up accelerators or tab-traversal if we are showing a non-crashed |
194 // TabContents. | 195 // TabContents. |
195 // We'll first give the page a chance to process the key events. If it does | 196 // We'll first give the page a chance to process the key events. If it does |
196 // not process them, they'll be returned to us and we'll treat them as | 197 // not process them, they'll be returned to us and we'll treat them as |
197 // accelerators then. | 198 // accelerators then. |
198 return web_contents() && !web_contents()->IsCrashed(); | 199 return web_contents() && !web_contents()->IsCrashed(); |
199 } | 200 } |
200 | 201 |
201 bool WebView::IsFocusable() const { | |
202 // We need to be focusable when our contents is not a view hierarchy, as | |
203 // clicking on the contents needs to focus us. | |
204 return !!web_contents(); | |
205 } | |
206 | |
207 void WebView::OnFocus() { | 202 void WebView::OnFocus() { |
208 if (web_contents()) | 203 if (web_contents()) |
209 web_contents()->Focus(); | 204 web_contents()->Focus(); |
210 } | 205 } |
211 | 206 |
212 void WebView::AboutToRequestFocusFromTabTraversal(bool reverse) { | 207 void WebView::AboutToRequestFocusFromTabTraversal(bool reverse) { |
213 if (web_contents()) | 208 if (web_contents()) |
214 web_contents()->FocusThroughTabTraversal(reverse); | 209 web_contents()->FocusThroughTabTraversal(reverse); |
215 } | 210 } |
216 | 211 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 if (!contents) { | 365 if (!contents) { |
371 content::WebContents::CreateParams create_params( | 366 content::WebContents::CreateParams create_params( |
372 browser_context, NULL); | 367 browser_context, NULL); |
373 return content::WebContents::Create(create_params); | 368 return content::WebContents::Create(create_params); |
374 } | 369 } |
375 | 370 |
376 return contents; | 371 return contents; |
377 } | 372 } |
378 | 373 |
379 } // namespace views | 374 } // namespace views |
OLD | NEW |