summaryrefslogtreecommitdiffstats
path: root/chromium/ppapi/cpp/private/find_private.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ppapi/cpp/private/find_private.cc')
-rw-r--r--chromium/ppapi/cpp/private/find_private.cc99
1 files changed, 99 insertions, 0 deletions
diff --git a/chromium/ppapi/cpp/private/find_private.cc b/chromium/ppapi/cpp/private/find_private.cc
new file mode 100644
index 00000000000..2765ae02eb1
--- /dev/null
+++ b/chromium/ppapi/cpp/private/find_private.cc
@@ -0,0 +1,99 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ppapi/cpp/private/find_private.h"
+
+#include "ppapi/c/private/ppb_find_private.h"
+#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/module.h"
+#include "ppapi/cpp/module_impl.h"
+#include "ppapi/cpp/rect.h"
+
+namespace pp {
+
+namespace {
+
+template <> const char* interface_name<PPB_Find_Private>() {
+ return PPB_FIND_PRIVATE_INTERFACE;
+}
+
+static const char kPPPFindInterface[] = PPP_FIND_PRIVATE_INTERFACE;
+
+PP_Bool StartFind(PP_Instance instance,
+ const char* text,
+ PP_Bool case_sensitive) {
+ void* object = Instance::GetPerInstanceObject(instance, kPPPFindInterface);
+ if (!object)
+ return PP_FALSE;
+ bool return_value = static_cast<Find_Private*>(object)->StartFind(
+ text, PP_ToBool(case_sensitive));
+ return PP_FromBool(return_value);
+}
+
+void SelectFindResult(PP_Instance instance, PP_Bool forward) {
+ void* object = Instance::GetPerInstanceObject(instance, kPPPFindInterface);
+ if (object)
+ static_cast<Find_Private*>(object)->SelectFindResult(PP_ToBool(forward));
+}
+
+void StopFind(PP_Instance instance) {
+ void* object = Instance::GetPerInstanceObject(instance, kPPPFindInterface);
+ if (object)
+ static_cast<Find_Private*>(object)->StopFind();
+}
+
+const PPP_Find_Private ppp_find = {
+ &StartFind,
+ &SelectFindResult,
+ &StopFind
+};
+
+} // namespace
+
+Find_Private::Find_Private(Instance* instance)
+ : associated_instance_(instance) {
+ Module::Get()->AddPluginInterface(kPPPFindInterface, &ppp_find);
+ instance->AddPerInstanceObject(kPPPFindInterface, this);
+}
+
+Find_Private::~Find_Private() {
+ Instance::RemovePerInstanceObject(associated_instance_,
+ kPPPFindInterface, this);
+}
+
+void Find_Private::SetPluginToHandleFindRequests() {
+ if (has_interface<PPB_Find_Private>()) {
+ get_interface<PPB_Find_Private>()->SetPluginToHandleFindRequests(
+ associated_instance_.pp_instance());
+ }
+}
+
+void Find_Private::NumberOfFindResultsChanged(int32_t total,
+ bool final_result) {
+ if (has_interface<PPB_Find_Private>()) {
+ get_interface<PPB_Find_Private>()->NumberOfFindResultsChanged(
+ associated_instance_.pp_instance(), total, PP_FromBool(final_result));
+ }
+}
+
+void Find_Private::SelectedFindResultChanged(int32_t index) {
+ if (has_interface<PPB_Find_Private>()) {
+ get_interface<PPB_Find_Private>()->SelectedFindResultChanged(
+ associated_instance_.pp_instance(), index);
+ }
+}
+
+void Find_Private::SetTickmarks(const std::vector<pp::Rect>& tickmarks) {
+ if (has_interface<PPB_Find_Private>()) {
+ std::vector<PP_Rect> tickmarks_converted(tickmarks.begin(),
+ tickmarks.end());
+ PP_Rect* array =
+ tickmarks_converted.empty() ? NULL : &tickmarks_converted[0];
+ get_interface<PPB_Find_Private>()->SetTickmarks(
+ associated_instance_.pp_instance(), array,
+ static_cast<uint32_t>(tickmarks.size()));
+ }
+}
+
+} // namespace pp