blob: 360c1f3cf1b0e6f7504aba3d1df07dcb946358f2 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/translate/content/renderer/isolated_world_util.h"
#include <ostream>
#include "base/check_op.h"
#include "components/translate/core/common/translate_util.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/blink/public/platform/web_isolated_world_info.h"
#include "third_party/blink/public/platform/web_url.h"
namespace translate {
void EnsureIsolatedWorldInitialized(int world_id) {
static absl::optional<int> last_used_world_id;
if (last_used_world_id) {
// Early return since the isolated world info. is already initialized.
DCHECK_EQ(*last_used_world_id, world_id)
<< "EnsureIsolatedWorldInitialized should always be called with the "
"same |world_id|";
return;
}
last_used_world_id = world_id;
// Set an empty CSP so that the main world's CSP is not used in the isolated
// world.
constexpr char kContentSecurityPolicy[] = "";
blink::WebIsolatedWorldInfo info;
info.security_origin =
blink::WebSecurityOrigin::Create(GetTranslateSecurityOrigin());
info.content_security_policy =
blink::WebString::FromUTF8(kContentSecurityPolicy);
blink::SetIsolatedWorldInfo(world_id, info);
}
} // namespace translate