| 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 #include "extensions/browser/guest_view/web_view/web_view_find_helper.h" | 5 #include "extensions/browser/guest_view/web_view/web_view_find_helper.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" |
| 9 #include "components/guest_view/browser/guest_view_event.h" | 10 #include "components/guest_view/browser/guest_view_event.h" |
| 10 #include "extensions/browser/api/guest_view/web_view/web_view_internal_api.h" | 11 #include "extensions/browser/api/guest_view/web_view/web_view_internal_api.h" |
| 11 #include "extensions/browser/guest_view/web_view/web_view_constants.h" | 12 #include "extensions/browser/guest_view/web_view/web_view_constants.h" |
| 12 | 13 |
| 13 using guest_view::GuestViewEvent; | 14 using guest_view::GuestViewEvent; |
| 14 | 15 |
| 15 namespace extensions { | 16 namespace extensions { |
| 16 | 17 |
| 17 WebViewFindHelper::WebViewFindHelper(WebViewGuest* webview_guest) | 18 WebViewFindHelper::WebViewFindHelper(WebViewGuest* webview_guest) |
| 18 : webview_guest_(webview_guest), current_find_request_id_(0) { | 19 : webview_guest_(webview_guest), current_find_request_id_(0) { |
| 19 } | 20 } |
| 20 | 21 |
| 21 WebViewFindHelper::~WebViewFindHelper() { | 22 WebViewFindHelper::~WebViewFindHelper() { |
| 22 } | 23 } |
| 23 | 24 |
| 24 void WebViewFindHelper::CancelAllFindSessions() { | 25 void WebViewFindHelper::CancelAllFindSessions() { |
| 25 current_find_session_ = nullptr; | 26 current_find_session_ = nullptr; |
| 26 while (!find_info_map_.empty()) { | 27 while (!find_info_map_.empty()) { |
| 27 find_info_map_.begin()->second->SendResponse(true /* canceled */); | 28 find_info_map_.begin()->second->SendResponse(true /* canceled */); |
| 28 find_info_map_.erase(find_info_map_.begin()); | 29 find_info_map_.erase(find_info_map_.begin()); |
| 29 } | 30 } |
| 30 if (find_update_event_) | 31 if (find_update_event_) |
| 31 DispatchFindUpdateEvent(true /* canceled */, true /* final_update */); | 32 DispatchFindUpdateEvent(true /* canceled */, true /* final_update */); |
| 32 find_update_event_.reset(); | 33 find_update_event_.reset(); |
| 33 } | 34 } |
| 34 | 35 |
| 35 void WebViewFindHelper::DispatchFindUpdateEvent(bool canceled, | 36 void WebViewFindHelper::DispatchFindUpdateEvent(bool canceled, |
| 36 bool final_update) { | 37 bool final_update) { |
| 37 DCHECK(find_update_event_.get()); | 38 DCHECK(find_update_event_.get()); |
| 38 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 39 std::unique_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| 39 find_update_event_->PrepareResults(args.get()); | 40 find_update_event_->PrepareResults(args.get()); |
| 40 args->SetBoolean(webview::kFindCanceled, canceled); | 41 args->SetBoolean(webview::kFindCanceled, canceled); |
| 41 args->SetBoolean(webview::kFindFinalUpdate, final_update); | 42 args->SetBoolean(webview::kFindFinalUpdate, final_update); |
| 42 DCHECK(webview_guest_); | 43 DCHECK(webview_guest_); |
| 43 webview_guest_->DispatchEventToView(make_scoped_ptr( | 44 webview_guest_->DispatchEventToView(base::WrapUnique( |
| 44 new GuestViewEvent(webview::kEventFindReply, std::move(args)))); | 45 new GuestViewEvent(webview::kEventFindReply, std::move(args)))); |
| 45 } | 46 } |
| 46 | 47 |
| 47 void WebViewFindHelper::EndFindSession(int session_request_id, bool canceled) { | 48 void WebViewFindHelper::EndFindSession(int session_request_id, bool canceled) { |
| 48 FindInfoMap::iterator session_iterator = | 49 FindInfoMap::iterator session_iterator = |
| 49 find_info_map_.find(session_request_id); | 50 find_info_map_.find(session_request_id); |
| 50 DCHECK(session_iterator != find_info_map_.end()); | 51 DCHECK(session_iterator != find_info_map_.end()); |
| 51 FindInfo* find_info = session_iterator->second.get(); | 52 FindInfo* find_info = session_iterator->second.get(); |
| 52 | 53 |
| 53 // Call the callback function of the first request of the find session. | 54 // Call the callback function of the first request of the find session. |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 results.SetBoolean(webview::kFindCanceled, canceled); | 282 results.SetBoolean(webview::kFindCanceled, canceled); |
| 282 | 283 |
| 283 // Call the callback. | 284 // Call the callback. |
| 284 find_function_->SetResult(results.DeepCopy()); | 285 find_function_->SetResult(results.DeepCopy()); |
| 285 find_function_->SendResponse(true); | 286 find_function_->SendResponse(true); |
| 286 } | 287 } |
| 287 | 288 |
| 288 WebViewFindHelper::FindInfo::~FindInfo() {} | 289 WebViewFindHelper::FindInfo::~FindInfo() {} |
| 289 | 290 |
| 290 } // namespace extensions | 291 } // namespace extensions |
| OLD | NEW |