|
@@ -8,6 +8,7 @@
|
|
|
#include <vector>
|
|
|
|
|
|
#include "atom/common/color_util.h"
|
|
|
+#include "atom/common/context_counter.h"
|
|
|
#include "atom/common/native_mate_converters/value_converter.h"
|
|
|
#include "atom/common/options_switches.h"
|
|
|
#include "atom/renderer/atom_autofill_agent.h"
|
|
@@ -17,7 +18,9 @@
|
|
|
#include "atom/renderer/guest_view_container.h"
|
|
|
#include "atom/renderer/preferences_manager.h"
|
|
|
#include "base/command_line.h"
|
|
|
+#include "base/process/process_handle.h"
|
|
|
#include "base/strings/string_split.h"
|
|
|
+#include "base/strings/stringprintf.h"
|
|
|
#include "chrome/renderer/media/chrome_key_systems.h"
|
|
|
#include "chrome/renderer/printing/print_web_view_helper.h"
|
|
|
#include "chrome/renderer/tts_dispatcher.h"
|
|
@@ -49,6 +52,14 @@
|
|
|
#include "chrome/renderer/pepper/pepper_helper.h"
|
|
|
#endif // defined(ENABLE_PEPPER_FLASH)
|
|
|
|
|
|
+// This is defined in later versions of Chromium, remove this if you see
|
|
|
+// compiler complaining duplicate defines.
|
|
|
+#if defined(OS_WIN) || defined(OS_FUCHSIA)
|
|
|
+#define CrPRIdPid "ld"
|
|
|
+#else
|
|
|
+#define CrPRIdPid "d"
|
|
|
+#endif
|
|
|
+
|
|
|
namespace atom {
|
|
|
|
|
|
namespace {
|
|
@@ -83,6 +94,19 @@ RendererClientBase::RendererClientBase() {
|
|
|
|
|
|
RendererClientBase::~RendererClientBase() {}
|
|
|
|
|
|
+void RendererClientBase::DidCreateScriptContext(
|
|
|
+ v8::Handle<v8::Context> context,
|
|
|
+ content::RenderFrame* render_frame) {
|
|
|
+ // global.setHidden("contextId", `${processId}-${GetNextContextId()}`)
|
|
|
+ std::string context_id = base::StringPrintf(
|
|
|
+ "%" CrPRIdPid "-%d", base::GetCurrentProcId(), GetNextContextId());
|
|
|
+ v8::Isolate* isolate = context->GetIsolate();
|
|
|
+ v8::Local<v8::String> key = mate::StringToSymbol(isolate, "contextId");
|
|
|
+ v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
|
|
|
+ v8::Local<v8::Value> value = mate::ConvertToV8(isolate, context_id);
|
|
|
+ context->Global()->SetPrivate(context, private_key, value);
|
|
|
+}
|
|
|
+
|
|
|
void RendererClientBase::AddRenderBindings(
|
|
|
v8::Isolate* isolate,
|
|
|
v8::Local<v8::Object> binding_object) {
|