#include "extensions/renderer/api/i18n_hooks_delegate.h"
#include <string_view>
#include <vector>
#include "base/check.h"
#include "base/i18n/rtl.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_util.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_id.h"
#include "extensions/common/message_bundle.h"
#include "extensions/renderer/bindings/api_binding_types.h"
#include "extensions/renderer/bindings/js_runner.h"
#include "extensions/renderer/extension_frame_helper.h"
#include "extensions/renderer/get_script_context.h"
#include "extensions/renderer/script_context.h"
#include "extensions/renderer/service_worker_data.h"
#include "extensions/renderer/shared_l10n_map.h"
#include "extensions/renderer/worker_thread_dispatcher.h"
#include "gin/converter.h"
#include "gin/data_object_builder.h"
#include "third_party/cld_3/src/src/nnet_language_identifier.h"
#include "v8/include/v8-container.h"
#include "v8/include/v8-context.h"
#include "v8/include/v8-exception.h"
#include "v8/include/v8-isolate.h"
#include "v8/include/v8-object.h"
#include "v8/include/v8-primitive.h"
namespace extensions {
namespace {
constexpr char kGetMessage[] = …;
constexpr char kGetUILanguage[] = …;
constexpr char kDetectLanguage[] = …;
const int kCldNumLangs = …;
const int kCld3MinimumByteThreshold = …;
struct DetectedLanguage { … };
struct LanguageDetectionResult { … };
v8::Local<v8::Value> DetectedLanguage::ToV8(v8::Isolate* isolate) const { … }
v8::Local<v8::Value> LanguageDetectionResult::ToV8(
v8::Local<v8::Context> context) const { … }
void InitDetectedLanguages(
const std::vector<chrome_lang_id::NNetLanguageIdentifier::Result>&
lang_results,
LanguageDetectionResult* result) { … }
v8::Local<v8::Value> GetI18nMessage(const std::string& message_name,
const ExtensionId& extension_id,
v8::Local<v8::Value> v8_substitutions,
v8::Local<v8::Value> v8_options,
SharedL10nMap::IPCTarget* ipc_target,
v8::Local<v8::Context> context) { … }
v8::Local<v8::Value> DetectTextLanguage(v8::Local<v8::Context> context,
const std::string& text) { … }
}
RequestResult;
I18nHooksDelegate::I18nHooksDelegate() { … }
I18nHooksDelegate::~I18nHooksDelegate() = default;
RequestResult I18nHooksDelegate::HandleRequest(
const std::string& method_name,
const APISignature* signature,
v8::Local<v8::Context> context,
v8::LocalVector<v8::Value>* arguments,
const APITypeReferenceMap& refs) { … }
RequestResult I18nHooksDelegate::HandleGetMessage(
ScriptContext* script_context,
const APISignature::V8ParseResult& parse_result) { … }
RequestResult I18nHooksDelegate::HandleGetUILanguage(
ScriptContext* script_context,
const APISignature::V8ParseResult& parse_result) { … }
RequestResult I18nHooksDelegate::HandleDetectLanguage(
ScriptContext* script_context,
const APISignature::V8ParseResult& parse_result) { … }
}