OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. |
3 * Copyright (C) 2009 Apple Inc. All rights reserved. | 3 * Copyright (C) 2009 Apple Inc. All rights reserved. |
4 * Copyright (C) 2014 Opera Software ASA. All rights reserved. | 4 * Copyright (C) 2014 Opera Software ASA. All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions are | 7 * modification, are permitted provided that the following conditions are |
8 * met: | 8 * met: |
9 * | 9 * |
10 * * Redistributions of source code must retain the above copyright | 10 * * Redistributions of source code must retain the above copyright |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
53 #include "core/loader/NavigationScheduler.h" | 53 #include "core/loader/NavigationScheduler.h" |
54 #include "core/loader/ProgressTracker.h" | 54 #include "core/loader/ProgressTracker.h" |
55 #include "core/plugins/PluginView.h" | 55 #include "core/plugins/PluginView.h" |
56 #include "core/probe/CoreProbes.h" | 56 #include "core/probe/CoreProbes.h" |
57 #include "platform/FrameViewBase.h" | 57 #include "platform/FrameViewBase.h" |
58 #include "platform/Histogram.h" | 58 #include "platform/Histogram.h" |
59 #include "platform/UserGestureIndicator.h" | 59 #include "platform/UserGestureIndicator.h" |
60 #include "platform/instrumentation/tracing/TraceEvent.h" | 60 #include "platform/instrumentation/tracing/TraceEvent.h" |
61 #include "platform/weborigin/SecurityOrigin.h" | 61 #include "platform/weborigin/SecurityOrigin.h" |
62 #include "platform/wtf/CurrentTime.h" | 62 #include "platform/wtf/CurrentTime.h" |
63 #include "platform/wtf/HashSet.h" | |
63 #include "platform/wtf/StdLibExtras.h" | 64 #include "platform/wtf/StdLibExtras.h" |
64 #include "platform/wtf/StringExtras.h" | 65 #include "platform/wtf/StringExtras.h" |
65 #include "platform/wtf/text/CString.h" | 66 #include "platform/wtf/text/CString.h" |
66 #include "platform/wtf/text/StringBuilder.h" | 67 #include "platform/wtf/text/StringBuilder.h" |
67 | 68 |
68 namespace blink { | 69 namespace blink { |
69 | 70 |
70 DEFINE_TRACE(ScriptController) { | 71 DEFINE_TRACE(ScriptController) { |
71 visitor->Trace(frame_); | 72 visitor->Trace(frame_); |
72 visitor->Trace(window_proxy_manager_); | 73 visitor->Trace(window_proxy_manager_); |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
364 if (results) { | 365 if (results) { |
365 for (size_t i = 0; i < result_array->Length(); ++i) { | 366 for (size_t i = 0; i < result_array->Length(); ++i) { |
366 v8::Local<v8::Value> value; | 367 v8::Local<v8::Value> value; |
367 if (!result_array->Get(context, i).ToLocal(&value)) | 368 if (!result_array->Get(context, i).ToLocal(&value)) |
368 return; | 369 return; |
369 results->push_back(value); | 370 results->push_back(value); |
370 } | 371 } |
371 } | 372 } |
372 } | 373 } |
373 | 374 |
375 int ScriptController::CreateNewIsolatedWorld(const String& world_name) { | |
376 // Find an unused id, unfortunately there doesn't seem to be a better way of | |
377 // doing this because DOMWrapperWorld::Create doesn't support isolated worlds. | |
378 Vector<RefPtr<DOMWrapperWorld>> worlds; | |
379 DOMWrapperWorld::AllWorldsInCurrentThread(worlds); | |
380 WTF::HashSet<int> existingWorlds; | |
381 for (const auto& world : worlds) { | |
382 if (!world->IsIsolatedWorld()) | |
383 continue; | |
384 existingWorlds.insert(world->GetWorldId()); | |
385 } | |
386 int world_id = 1; | |
caseq
2017/04/28 21:41:30
I think allocating ids like this is going to bring
Sami
2017/05/02 09:47:19
Is there some registry of world ids? Should we jus
alex clarke (OOO till 29th)
2017/05/02 10:00:06
OK do you have any suggestions for what else we mi
| |
387 while (existingWorlds.Contains(world_id)) { | |
388 world_id++; | |
389 } | |
390 DCHECK_LT(world_id, DOMWrapperWorld::kEmbedderWorldIdLimit); | |
391 RefPtr<DOMWrapperWorld> world = | |
392 DOMWrapperWorld::EnsureIsolatedWorld(GetIsolate(), world_id); | |
393 | |
394 DOMWrapperWorld::SetIsolatedWorldHumanReadableName(world_id, world_name); | |
395 // Make sure the execution context exists. | |
396 WindowProxy(*world); | |
397 return world_id; | |
398 } | |
399 | |
374 } // namespace blink | 400 } // namespace blink |
OLD | NEW |