Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(672)

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp

Issue 2571063002: Remove Blink-in-JS (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 void ScriptController::namedItemAdded(HTMLDocument* doc, 260 void ScriptController::namedItemAdded(HTMLDocument* doc,
261 const AtomicString& name) { 261 const AtomicString& name) {
262 windowProxy(DOMWrapperWorld::mainWorld())->namedItemAdded(doc, name); 262 windowProxy(DOMWrapperWorld::mainWorld())->namedItemAdded(doc, name);
263 } 263 }
264 264
265 void ScriptController::namedItemRemoved(HTMLDocument* doc, 265 void ScriptController::namedItemRemoved(HTMLDocument* doc,
266 const AtomicString& name) { 266 const AtomicString& name) {
267 windowProxy(DOMWrapperWorld::mainWorld())->namedItemRemoved(doc, name); 267 windowProxy(DOMWrapperWorld::mainWorld())->namedItemRemoved(doc, name);
268 } 268 }
269 269
270 static bool isInPrivateScriptIsolateWorld(v8::Isolate* isolate) {
271 v8::Local<v8::Context> context = isolate->GetCurrentContext();
272 return !context.IsEmpty() && toDOMWindow(context) &&
273 DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld();
274 }
275
276 bool ScriptController::canExecuteScripts( 270 bool ScriptController::canExecuteScripts(
277 ReasonForCallingCanExecuteScripts reason) { 271 ReasonForCallingCanExecuteScripts reason) {
278 // For performance reasons, we check isInPrivateScriptIsolateWorld() only if
279 // canExecuteScripts is going to return false.
280 272
281 if (frame()->document() && frame()->document()->isSandboxed(SandboxScripts)) { 273 if (frame()->document() && frame()->document()->isSandboxed(SandboxScripts)) {
282 if (isInPrivateScriptIsolateWorld(isolate()))
283 return true;
284 // FIXME: This message should be moved off the console once a solution to 274 // FIXME: This message should be moved off the console once a solution to
285 // https://bugs.webkit.org/show_bug.cgi?id=103274 exists. 275 // https://bugs.webkit.org/show_bug.cgi?id=103274 exists.
286 if (reason == AboutToExecuteScript) 276 if (reason == AboutToExecuteScript)
287 frame()->document()->addConsoleMessage(ConsoleMessage::create( 277 frame()->document()->addConsoleMessage(ConsoleMessage::create(
288 SecurityMessageSource, ErrorMessageLevel, 278 SecurityMessageSource, ErrorMessageLevel,
289 "Blocked script execution in '" + 279 "Blocked script execution in '" +
290 frame()->document()->url().elidedString() + 280 frame()->document()->url().elidedString() +
291 "' because the document's frame is sandboxed and the " 281 "' because the document's frame is sandboxed and the "
292 "'allow-scripts' permission is not set.")); 282 "'allow-scripts' permission is not set."));
293 return false; 283 return false;
294 } 284 }
295 285
296 if (frame()->document() && frame()->document()->isViewSource()) { 286 if (frame()->document() && frame()->document()->isViewSource()) {
297 ASSERT(frame()->document()->getSecurityOrigin()->isUnique()); 287 ASSERT(frame()->document()->getSecurityOrigin()->isUnique());
298 return true; 288 return true;
299 } 289 }
300 290
301 FrameLoaderClient* client = frame()->loader().client(); 291 FrameLoaderClient* client = frame()->loader().client();
302 if (!client) 292 if (!client)
303 return false; 293 return false;
304 Settings* settings = frame()->settings(); 294 Settings* settings = frame()->settings();
305 const bool allowed = 295 const bool allowed =
306 client->allowScript(settings && settings->scriptEnabled()) || 296 client->allowScript(settings && settings->scriptEnabled());
307 isInPrivateScriptIsolateWorld(isolate());
308 if (!allowed && reason == AboutToExecuteScript) 297 if (!allowed && reason == AboutToExecuteScript)
309 client->didNotAllowScript(); 298 client->didNotAllowScript();
310 return allowed; 299 return allowed;
311 } 300 }
312 301
313 bool ScriptController::executeScriptIfJavaScriptURL(const KURL& url, 302 bool ScriptController::executeScriptIfJavaScriptURL(const KURL& url,
314 Element* element) { 303 Element* element) {
315 if (!protocolIsJavaScript(url)) 304 if (!protocolIsJavaScript(url))
316 return false; 305 return false;
317 306
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 for (size_t i = 0; i < resultArray->Length(); ++i) { 435 for (size_t i = 0; i < resultArray->Length(); ++i) {
447 v8::Local<v8::Value> value; 436 v8::Local<v8::Value> value;
448 if (!resultArray->Get(scriptState->context(), i).ToLocal(&value)) 437 if (!resultArray->Get(scriptState->context(), i).ToLocal(&value))
449 return; 438 return;
450 results->push_back(value); 439 results->push_back(value);
451 } 440 }
452 } 441 }
453 } 442 }
454 443
455 } // namespace blink 444 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698