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

Side by Side Diff: third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp

Issue 2272613003: binding: Retires ExceptionState::throwIfNeeded(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Synced. Created 4 years, 3 months 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) 2011 Google Inc. All rights reserved. 2 * Copyright (c) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 if (info.Length() < 1) 338 if (info.Length() < 1)
339 return; 339 return;
340 String selector = toCoreStringWithUndefinedOrNullCheck(info[0]); 340 String selector = toCoreStringWithUndefinedOrNullCheck(info[0]);
341 if (selector.isEmpty()) 341 if (selector.isEmpty())
342 return; 342 return;
343 Node* node = secondArgumentAsNode(info); 343 Node* node = secondArgumentAsNode(info);
344 if (!node || !node->isContainerNode()) 344 if (!node || !node->isContainerNode())
345 return; 345 return;
346 ExceptionState exceptionState(ExceptionState::ExecutionContext, "$", "Comman dLineAPI", info.Holder(), info.GetIsolate()); 346 ExceptionState exceptionState(ExceptionState::ExecutionContext, "$", "Comman dLineAPI", info.Holder(), info.GetIsolate());
347 Element* element = toContainerNode(node)->querySelector(AtomicString(selecto r), exceptionState); 347 Element* element = toContainerNode(node)->querySelector(AtomicString(selecto r), exceptionState);
348 if (exceptionState.throwIfNeeded()) 348 if (exceptionState.hadException())
349 return; 349 return;
350 if (element) 350 if (element)
351 info.GetReturnValue().Set(toV8(element, info.Holder(), info.GetIsolate() )); 351 info.GetReturnValue().Set(toV8(element, info.Holder(), info.GetIsolate() ));
352 else 352 else
353 info.GetReturnValue().Set(v8::Null(info.GetIsolate())); 353 info.GetReturnValue().Set(v8::Null(info.GetIsolate()));
354 } 354 }
355 355
356 void MainThreadDebugger::querySelectorAllCallback(const v8::FunctionCallbackInfo <v8::Value>& info) 356 void MainThreadDebugger::querySelectorAllCallback(const v8::FunctionCallbackInfo <v8::Value>& info)
357 { 357 {
358 if (info.Length() < 1) 358 if (info.Length() < 1)
359 return; 359 return;
360 String selector = toCoreStringWithUndefinedOrNullCheck(info[0]); 360 String selector = toCoreStringWithUndefinedOrNullCheck(info[0]);
361 if (selector.isEmpty()) 361 if (selector.isEmpty())
362 return; 362 return;
363 Node* node = secondArgumentAsNode(info); 363 Node* node = secondArgumentAsNode(info);
364 if (!node || !node->isContainerNode()) 364 if (!node || !node->isContainerNode())
365 return; 365 return;
366 ExceptionState exceptionState(ExceptionState::ExecutionContext, "$$", "Comma ndLineAPI", info.Holder(), info.GetIsolate()); 366 ExceptionState exceptionState(ExceptionState::ExecutionContext, "$$", "Comma ndLineAPI", info.Holder(), info.GetIsolate());
367 // toV8(elementList) doesn't work here, since we need a proper Array instanc e, not NodeList. 367 // toV8(elementList) doesn't work here, since we need a proper Array instanc e, not NodeList.
368 StaticElementList* elementList = toContainerNode(node)->querySelectorAll(Ato micString(selector), exceptionState); 368 StaticElementList* elementList = toContainerNode(node)->querySelectorAll(Ato micString(selector), exceptionState);
369 if (exceptionState.throwIfNeeded() || !elementList) 369 if (exceptionState.hadException() || !elementList)
370 return; 370 return;
371 v8::Isolate* isolate = info.GetIsolate(); 371 v8::Isolate* isolate = info.GetIsolate();
372 v8::Local<v8::Context> context = isolate->GetCurrentContext(); 372 v8::Local<v8::Context> context = isolate->GetCurrentContext();
373 v8::Local<v8::Array> nodes = v8::Array::New(isolate, elementList->length()); 373 v8::Local<v8::Array> nodes = v8::Array::New(isolate, elementList->length());
374 for (size_t i = 0; i < elementList->length(); ++i) { 374 for (size_t i = 0; i < elementList->length(); ++i) {
375 Element* element = elementList->item(i); 375 Element* element = elementList->item(i);
376 if (!createDataPropertyInArray(context, nodes, i, toV8(element, info.Hol der(), info.GetIsolate())).FromMaybe(false)) 376 if (!createDataPropertyInArray(context, nodes, i, toV8(element, info.Hol der(), info.GetIsolate())).FromMaybe(false))
377 return; 377 return;
378 } 378 }
379 info.GetReturnValue().Set(nodes); 379 info.GetReturnValue().Set(nodes);
380 } 380 }
381 381
382 void MainThreadDebugger::xpathSelectorCallback(const v8::FunctionCallbackInfo<v8 ::Value>& info) 382 void MainThreadDebugger::xpathSelectorCallback(const v8::FunctionCallbackInfo<v8 ::Value>& info)
383 { 383 {
384 if (info.Length() < 1) 384 if (info.Length() < 1)
385 return; 385 return;
386 String selector = toCoreStringWithUndefinedOrNullCheck(info[0]); 386 String selector = toCoreStringWithUndefinedOrNullCheck(info[0]);
387 if (selector.isEmpty()) 387 if (selector.isEmpty())
388 return; 388 return;
389 Node* node = secondArgumentAsNode(info); 389 Node* node = secondArgumentAsNode(info);
390 if (!node || !node->isContainerNode()) 390 if (!node || !node->isContainerNode())
391 return; 391 return;
392 392
393 ExceptionState exceptionState(ExceptionState::ExecutionContext, "$x", "Comma ndLineAPI", info.Holder(), info.GetIsolate()); 393 ExceptionState exceptionState(ExceptionState::ExecutionContext, "$x", "Comma ndLineAPI", info.Holder(), info.GetIsolate());
394 XPathResult* result = XPathEvaluator::create()->evaluate(selector, node, nul lptr, XPathResult::kAnyType, ScriptValue(), exceptionState); 394 XPathResult* result = XPathEvaluator::create()->evaluate(selector, node, nul lptr, XPathResult::kAnyType, ScriptValue(), exceptionState);
395 if (exceptionState.throwIfNeeded() || !result) 395 if (exceptionState.hadException() || !result)
396 return; 396 return;
397 if (result->resultType() == XPathResult::kNumberType) { 397 if (result->resultType() == XPathResult::kNumberType) {
398 info.GetReturnValue().Set(toV8(result->numberValue(exceptionState), info .Holder(), info.GetIsolate())); 398 info.GetReturnValue().Set(toV8(result->numberValue(exceptionState), info .Holder(), info.GetIsolate()));
399 } else if (result->resultType() == XPathResult::kStringType) { 399 } else if (result->resultType() == XPathResult::kStringType) {
400 info.GetReturnValue().Set(toV8(result->stringValue(exceptionState), info .Holder(), info.GetIsolate())); 400 info.GetReturnValue().Set(toV8(result->stringValue(exceptionState), info .Holder(), info.GetIsolate()));
401 } else if (result->resultType() == XPathResult::kBooleanType) { 401 } else if (result->resultType() == XPathResult::kBooleanType) {
402 info.GetReturnValue().Set(toV8(result->booleanValue(exceptionState), inf o.Holder(), info.GetIsolate())); 402 info.GetReturnValue().Set(toV8(result->booleanValue(exceptionState), inf o.Holder(), info.GetIsolate()));
403 } else { 403 } else {
404 v8::Isolate* isolate = info.GetIsolate(); 404 v8::Isolate* isolate = info.GetIsolate();
405 v8::Local<v8::Context> context = isolate->GetCurrentContext(); 405 v8::Local<v8::Context> context = isolate->GetCurrentContext();
406 v8::Local<v8::Array> nodes = v8::Array::New(isolate); 406 v8::Local<v8::Array> nodes = v8::Array::New(isolate);
407 size_t index = 0; 407 size_t index = 0;
408 while (Node* node = result->iterateNext(exceptionState)) { 408 while (Node* node = result->iterateNext(exceptionState)) {
409 if (exceptionState.throwIfNeeded()) 409 if (exceptionState.hadException())
410 return; 410 return;
411 if (!createDataPropertyInArray(context, nodes, index++, toV8(node, i nfo.Holder(), info.GetIsolate())).FromMaybe(false)) 411 if (!createDataPropertyInArray(context, nodes, index++, toV8(node, i nfo.Holder(), info.GetIsolate())).FromMaybe(false))
412 return; 412 return;
413 } 413 }
414 info.GetReturnValue().Set(nodes); 414 info.GetReturnValue().Set(nodes);
415 } 415 }
416 exceptionState.throwIfNeeded();
417 } 416 }
418 417
419 } // namespace blink 418 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698