| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 | 5 |
| 6 #include "chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.h" | 6 #include "chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.h" |
| 7 | 7 |
| 8 #include "chrome/browser/extensions/api/web_request/web_request_api.h" | 8 #include "chrome/browser/extensions/api/web_request/web_request_api.h" |
| 9 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" | 9 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" |
| 10 #include "chrome/browser/favicon/favicon_tab_helper.h" | 10 #include "chrome/browser/favicon/favicon_tab_helper.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 34 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 35 ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners( | 35 ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners( |
| 36 profile, | 36 profile, |
| 37 extension_id, | 37 extension_id, |
| 38 embedder_process_id, | 38 embedder_process_id, |
| 39 view_instance_id); | 39 view_instance_id); |
| 40 } | 40 } |
| 41 | 41 |
| 42 ChromeWebViewGuestDelegate::ChromeWebViewGuestDelegate( | 42 ChromeWebViewGuestDelegate::ChromeWebViewGuestDelegate( |
| 43 extensions::WebViewGuest* web_view_guest) | 43 extensions::WebViewGuest* web_view_guest) |
| 44 : WebViewGuestDelegate(web_view_guest), | 44 : pending_context_menu_request_id_(0), |
| 45 find_helper_(web_view_guest), | 45 chromevox_injected_(false), |
| 46 pending_context_menu_request_id_(0), | 46 current_zoom_factor_(1.0), |
| 47 chromevox_injected_(false), | 47 web_view_guest_(web_view_guest) { |
| 48 current_zoom_factor_(1.0) { | |
| 49 } | 48 } |
| 50 | 49 |
| 51 ChromeWebViewGuestDelegate::~ChromeWebViewGuestDelegate() { | 50 ChromeWebViewGuestDelegate::~ChromeWebViewGuestDelegate() { |
| 52 } | 51 } |
| 53 | 52 |
| 54 void ChromeWebViewGuestDelegate::Find( | |
| 55 const base::string16& search_text, | |
| 56 const blink::WebFindOptions& options, | |
| 57 extensions::WebViewInternalFindFunction* find_function) { | |
| 58 find_helper_.Find(guest_web_contents(), search_text, options, find_function); | |
| 59 } | |
| 60 | |
| 61 void ChromeWebViewGuestDelegate::FindReply(content::WebContents* source, | |
| 62 int request_id, | |
| 63 int number_of_matches, | |
| 64 const gfx::Rect& selection_rect, | |
| 65 int active_match_ordinal, | |
| 66 bool final_update) { | |
| 67 find_helper_.FindReply(request_id, number_of_matches, selection_rect, | |
| 68 active_match_ordinal, final_update); | |
| 69 } | |
| 70 | |
| 71 void ChromeWebViewGuestDelegate::StopFinding(content::StopFindAction action) { | |
| 72 find_helper_.CancelAllFindSessions(); | |
| 73 guest_web_contents()->StopFinding(action); | |
| 74 } | |
| 75 | |
| 76 double ChromeWebViewGuestDelegate::GetZoom() { | 53 double ChromeWebViewGuestDelegate::GetZoom() { |
| 77 return current_zoom_factor_; | 54 return current_zoom_factor_; |
| 78 } | 55 } |
| 79 | 56 |
| 80 bool ChromeWebViewGuestDelegate::HandleContextMenu( | 57 bool ChromeWebViewGuestDelegate::HandleContextMenu( |
| 81 const content::ContextMenuParams& params) { | 58 const content::ContextMenuParams& params) { |
| 82 ContextMenuDelegate* menu_delegate = | 59 ContextMenuDelegate* menu_delegate = |
| 83 ContextMenuDelegate::FromWebContents(guest_web_contents()); | 60 ContextMenuDelegate::FromWebContents(guest_web_contents()); |
| 84 DCHECK(menu_delegate); | 61 DCHECK(menu_delegate); |
| 85 | 62 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 base::Bind( | 118 base::Bind( |
| 142 &RemoveWebViewEventListenersOnIOThread, | 119 &RemoveWebViewEventListenersOnIOThread, |
| 143 web_view_guest()->browser_context(), | 120 web_view_guest()->browser_context(), |
| 144 web_view_guest()->embedder_extension_id(), | 121 web_view_guest()->embedder_extension_id(), |
| 145 web_view_guest()->embedder_render_process_id(), | 122 web_view_guest()->embedder_render_process_id(), |
| 146 web_view_guest()->view_instance_id())); | 123 web_view_guest()->view_instance_id())); |
| 147 } | 124 } |
| 148 | 125 |
| 149 void ChromeWebViewGuestDelegate::OnDidCommitProvisionalLoadForFrame( | 126 void ChromeWebViewGuestDelegate::OnDidCommitProvisionalLoadForFrame( |
| 150 bool is_main_frame) { | 127 bool is_main_frame) { |
| 151 find_helper_.CancelAllFindSessions(); | |
| 152 | |
| 153 // Update the current zoom factor for the new page. | 128 // Update the current zoom factor for the new page. |
| 154 ZoomController* zoom_controller = | 129 ZoomController* zoom_controller = |
| 155 ZoomController::FromWebContents(guest_web_contents()); | 130 ZoomController::FromWebContents(guest_web_contents()); |
| 156 DCHECK(zoom_controller); | 131 DCHECK(zoom_controller); |
| 157 current_zoom_factor_ = zoom_controller->GetZoomLevel(); | 132 current_zoom_factor_ = zoom_controller->GetZoomLevel(); |
| 158 if (is_main_frame) | 133 if (is_main_frame) |
| 159 chromevox_injected_ = false; | 134 chromevox_injected_ = false; |
| 160 } | 135 } |
| 161 | 136 |
| 162 void ChromeWebViewGuestDelegate::OnDidInitialize() { | 137 void ChromeWebViewGuestDelegate::OnDidInitialize() { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 // TODO(lazyboy): We need to expose some kind of enum equivalent of | 169 // TODO(lazyboy): We need to expose some kind of enum equivalent of |
| 195 // |command_id| instead of plain integers. | 170 // |command_id| instead of plain integers. |
| 196 item_value->SetInteger(webview::kMenuItemCommandId, | 171 item_value->SetInteger(webview::kMenuItemCommandId, |
| 197 menu_model.GetCommandIdAt(i)); | 172 menu_model.GetCommandIdAt(i)); |
| 198 item_value->SetString(webview::kMenuItemLabel, menu_model.GetLabelAt(i)); | 173 item_value->SetString(webview::kMenuItemLabel, menu_model.GetLabelAt(i)); |
| 199 items->Append(item_value); | 174 items->Append(item_value); |
| 200 } | 175 } |
| 201 return items.Pass(); | 176 return items.Pass(); |
| 202 } | 177 } |
| 203 | 178 |
| 204 void ChromeWebViewGuestDelegate::OnRenderProcessGone() { | |
| 205 // Cancel all find sessions in progress. | |
| 206 find_helper_.CancelAllFindSessions(); | |
| 207 } | |
| 208 | |
| 209 void ChromeWebViewGuestDelegate::OnSetZoom(double zoom_factor) { | 179 void ChromeWebViewGuestDelegate::OnSetZoom(double zoom_factor) { |
| 210 ZoomController* zoom_controller = | 180 ZoomController* zoom_controller = |
| 211 ZoomController::FromWebContents(guest_web_contents()); | 181 ZoomController::FromWebContents(guest_web_contents()); |
| 212 DCHECK(zoom_controller); | 182 DCHECK(zoom_controller); |
| 213 double zoom_level = content::ZoomFactorToZoomLevel(zoom_factor); | 183 double zoom_level = content::ZoomFactorToZoomLevel(zoom_factor); |
| 214 zoom_controller->SetZoomLevel(zoom_level); | 184 zoom_controller->SetZoomLevel(zoom_level); |
| 215 | 185 |
| 216 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 186 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| 217 args->SetDouble(webview::kOldZoomFactor, current_zoom_factor_); | 187 args->SetDouble(webview::kOldZoomFactor, current_zoom_factor_); |
| 218 args->SetDouble(webview::kNewZoomFactor, zoom_factor); | 188 args->SetDouble(webview::kNewZoomFactor, zoom_factor); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 accessibility_subscription_.reset(); | 231 accessibility_subscription_.reset(); |
| 262 } else if (details.notification_type == | 232 } else if (details.notification_type == |
| 263 chromeos::ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK) { | 233 chromeos::ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK) { |
| 264 if (details.enabled) | 234 if (details.enabled) |
| 265 InjectChromeVoxIfNeeded(guest_web_contents()->GetRenderViewHost()); | 235 InjectChromeVoxIfNeeded(guest_web_contents()->GetRenderViewHost()); |
| 266 else | 236 else |
| 267 chromevox_injected_ = false; | 237 chromevox_injected_ = false; |
| 268 } | 238 } |
| 269 } | 239 } |
| 270 #endif | 240 #endif |
| OLD | NEW |