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

Side by Side Diff: Source/core/testing/Internals.cpp

Issue 445933003: Clean up testing.internals argument type checking. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Tidy up result type Created 6 years, 4 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
« no previous file with comments | « Source/core/testing/Internals.h ('k') | Source/core/testing/Internals.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 * Copyright (C) 2013 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 Document* document = contextDocument(); 332 Document* document = contextDocument();
333 if (enabled) 333 if (enabled)
334 document->ensureStyleResolver().enableStats(StyleResolver::ReportSlowSta ts); 334 document->ensureStyleResolver().enableStats(StyleResolver::ReportSlowSta ts);
335 else 335 else
336 document->ensureStyleResolver().disableStats(); 336 document->ensureStyleResolver().disableStats();
337 } 337 }
338 338
339 String Internals::styleResolverStatsReport(ExceptionState& exceptionState) const 339 String Internals::styleResolverStatsReport(ExceptionState& exceptionState) const
340 { 340 {
341 Document* document = contextDocument(); 341 Document* document = contextDocument();
342 if (!document) {
343 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
344 return String();
345 }
342 if (!document->ensureStyleResolver().stats()) { 346 if (!document->ensureStyleResolver().stats()) {
343 exceptionState.throwDOMException(InvalidStateError, "Style resolver stat s not enabled"); 347 exceptionState.throwDOMException(InvalidStateError, "Style resolver stat s not enabled");
344 return String(); 348 return String();
345 } 349 }
346 return document->ensureStyleResolver().stats()->report(); 350 return document->ensureStyleResolver().stats()->report();
347 } 351 }
348 352
349 String Internals::styleResolverStatsTotalsReport(ExceptionState& exceptionState) const 353 String Internals::styleResolverStatsTotalsReport(ExceptionState& exceptionState) const
350 { 354 {
351 Document* document = contextDocument(); 355 Document* document = contextDocument();
356 if (!document) {
357 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
358 return String();
359 }
352 if (!document->ensureStyleResolver().statsTotals()) { 360 if (!document->ensureStyleResolver().statsTotals()) {
353 exceptionState.throwDOMException(InvalidStateError, "Style resolver stat s not enabled"); 361 exceptionState.throwDOMException(InvalidStateError, "Style resolver stat s not enabled");
354 return String(); 362 return String();
355 } 363 }
356 return document->ensureStyleResolver().statsTotals()->report(); 364 return document->ensureStyleResolver().statsTotals()->report();
357 } 365 }
358 366
359 bool Internals::isSharingStyle(Element* element1, Element* element2, ExceptionSt ate& exceptionState) const 367 bool Internals::isSharingStyle(Element* element1, Element* element2) const
360 { 368 {
361 if (!element1 || !element2) { 369 ASSERT(element1 && element2);
362 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(element1 ? 2 : 1, "Element"));
363 return false;
364 }
365 return element1->renderStyle() == element2->renderStyle(); 370 return element1->renderStyle() == element2->renderStyle();
366 } 371 }
367 372
368 bool Internals::isValidContentSelect(Element* insertionPoint, ExceptionState& ex ceptionState) 373 bool Internals::isValidContentSelect(Element* insertionPoint, ExceptionState& ex ceptionState)
369 { 374 {
370 if (!insertionPoint || !insertionPoint->isInsertionPoint()) { 375 ASSERT(insertionPoint);
371 exceptionState.throwDOMException(InvalidAccessError, "The insertion poin t provided is invalid."); 376 if (!insertionPoint->isInsertionPoint()) {
377 exceptionState.throwDOMException(InvalidAccessError, "The element is not an insertion point.");
372 return false; 378 return false;
373 } 379 }
374 380
375 return isHTMLContentElement(*insertionPoint) && toHTMLContentElement(*insert ionPoint).isSelectValid(); 381 return isHTMLContentElement(*insertionPoint) && toHTMLContentElement(*insert ionPoint).isSelectValid();
376 } 382 }
377 383
378 Node* Internals::treeScopeRootNode(Node* node, ExceptionState& exceptionState) 384 Node* Internals::treeScopeRootNode(Node* node)
379 { 385 {
380 if (!node) { 386 ASSERT(node);
381 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
382 return 0;
383 }
384
385 return &node->treeScope().rootNode(); 387 return &node->treeScope().rootNode();
386 } 388 }
387 389
388 Node* Internals::parentTreeScope(Node* node, ExceptionState& exceptionState) 390 Node* Internals::parentTreeScope(Node* node)
389 { 391 {
390 if (!node) { 392 ASSERT(node);
391 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
392 return 0;
393 }
394 const TreeScope* parentTreeScope = node->treeScope().parentTreeScope(); 393 const TreeScope* parentTreeScope = node->treeScope().parentTreeScope();
395 return parentTreeScope ? &parentTreeScope->rootNode() : 0; 394 return parentTreeScope ? &parentTreeScope->rootNode() : 0;
396 } 395 }
397 396
398 bool Internals::hasSelectorForIdInShadow(Element* host, const AtomicString& idVa lue, ExceptionState& exceptionState) 397 bool Internals::hasSelectorForIdInShadow(Element* host, const AtomicString& idVa lue, ExceptionState& exceptionState)
399 { 398 {
400 if (!host || !host->shadow()) { 399 ASSERT(host);
401 exceptionState.throwDOMException(InvalidAccessError, "The host element p rovided is invalid, or does not have a shadow."); 400 if (!host->shadow()) {
401 exceptionState.throwDOMException(InvalidAccessError, "The host element d oes not have a shadow.");
402 return 0; 402 return 0;
403 } 403 }
404 404
405 return host->shadow()->ensureSelectFeatureSet().hasSelectorForId(idValue); 405 return host->shadow()->ensureSelectFeatureSet().hasSelectorForId(idValue);
406 } 406 }
407 407
408 bool Internals::hasSelectorForClassInShadow(Element* host, const AtomicString& c lassName, ExceptionState& exceptionState) 408 bool Internals::hasSelectorForClassInShadow(Element* host, const AtomicString& c lassName, ExceptionState& exceptionState)
409 { 409 {
410 if (!host || !host->shadow()) { 410 ASSERT(host);
411 exceptionState.throwDOMException(InvalidAccessError, "The host element p rovided is invalid, or does not have a shadow."); 411 if (!host->shadow()) {
412 exceptionState.throwDOMException(InvalidAccessError, "The host element d oes not have a shadow.");
412 return 0; 413 return 0;
413 } 414 }
414 415
415 return host->shadow()->ensureSelectFeatureSet().hasSelectorForClass(classNam e); 416 return host->shadow()->ensureSelectFeatureSet().hasSelectorForClass(classNam e);
416 } 417 }
417 418
418 bool Internals::hasSelectorForAttributeInShadow(Element* host, const AtomicStrin g& attributeName, ExceptionState& exceptionState) 419 bool Internals::hasSelectorForAttributeInShadow(Element* host, const AtomicStrin g& attributeName, ExceptionState& exceptionState)
419 { 420 {
420 if (!host || !host->shadow()) { 421 ASSERT(host);
421 exceptionState.throwDOMException(InvalidAccessError, "The host element p rovided is invalid, or does not have a shadow."); 422 if (!host->shadow()) {
423 exceptionState.throwDOMException(InvalidAccessError, "The host element d oes not have a shadow.");
422 return 0; 424 return 0;
423 } 425 }
424 426
425 return host->shadow()->ensureSelectFeatureSet().hasSelectorForAttribute(attr ibuteName); 427 return host->shadow()->ensureSelectFeatureSet().hasSelectorForAttribute(attr ibuteName);
426 } 428 }
427 429
428 bool Internals::hasSelectorForPseudoClassInShadow(Element* host, const String& p seudoClass, ExceptionState& exceptionState) 430 bool Internals::hasSelectorForPseudoClassInShadow(Element* host, const String& p seudoClass, ExceptionState& exceptionState)
429 { 431 {
430 if (!host || !host->shadow()) { 432 ASSERT(host);
431 exceptionState.throwDOMException(InvalidAccessError, "The host element p rovided is invalid, or does not have a shadow."); 433 if (!host->shadow()) {
434 exceptionState.throwDOMException(InvalidAccessError, "The host element d oes not have a shadow.");
432 return 0; 435 return 0;
433 } 436 }
434 437
435 const SelectRuleFeatureSet& featureSet = host->shadow()->ensureSelectFeature Set(); 438 const SelectRuleFeatureSet& featureSet = host->shadow()->ensureSelectFeature Set();
436 if (pseudoClass == "checked") 439 if (pseudoClass == "checked")
437 return featureSet.hasSelectorForChecked(); 440 return featureSet.hasSelectorForChecked();
438 if (pseudoClass == "enabled") 441 if (pseudoClass == "enabled")
439 return featureSet.hasSelectorForEnabled(); 442 return featureSet.hasSelectorForEnabled();
440 if (pseudoClass == "disabled") 443 if (pseudoClass == "disabled")
441 return featureSet.hasSelectorForDisabled(); 444 return featureSet.hasSelectorForDisabled();
442 if (pseudoClass == "indeterminate") 445 if (pseudoClass == "indeterminate")
443 return featureSet.hasSelectorForIndeterminate(); 446 return featureSet.hasSelectorForIndeterminate();
444 if (pseudoClass == "link") 447 if (pseudoClass == "link")
445 return featureSet.hasSelectorForLink(); 448 return featureSet.hasSelectorForLink();
446 if (pseudoClass == "target") 449 if (pseudoClass == "target")
447 return featureSet.hasSelectorForTarget(); 450 return featureSet.hasSelectorForTarget();
448 if (pseudoClass == "visited") 451 if (pseudoClass == "visited")
449 return featureSet.hasSelectorForVisited(); 452 return featureSet.hasSelectorForVisited();
450 453
451 ASSERT_NOT_REACHED(); 454 ASSERT_NOT_REACHED();
452 return false; 455 return false;
453 } 456 }
454 457
455 unsigned short Internals::compareTreeScopePosition(const Node* node1, const Node * node2, ExceptionState& exceptionState) const 458 unsigned short Internals::compareTreeScopePosition(const Node* node1, const Node * node2, ExceptionState& exceptionState) const
456 { 459 {
457 if (!node1 || !node2) { 460 ASSERT(node1 && node2);
458 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(node1 ? 2 : 1, "Node"));
459 return 0;
460 }
461 const TreeScope* treeScope1 = node1->isDocumentNode() ? static_cast<const Tr eeScope*>(toDocument(node1)) : 461 const TreeScope* treeScope1 = node1->isDocumentNode() ? static_cast<const Tr eeScope*>(toDocument(node1)) :
462 node1->isShadowRoot() ? static_cast<const TreeScope*>(toShadowRoot(node1 )) : 0; 462 node1->isShadowRoot() ? static_cast<const TreeScope*>(toShadowRoot(node1 )) : 0;
463 const TreeScope* treeScope2 = node2->isDocumentNode() ? static_cast<const Tr eeScope*>(toDocument(node2)) : 463 const TreeScope* treeScope2 = node2->isDocumentNode() ? static_cast<const Tr eeScope*>(toDocument(node2)) :
464 node2->isShadowRoot() ? static_cast<const TreeScope*>(toShadowRoot(node2 )) : 0; 464 node2->isShadowRoot() ? static_cast<const TreeScope*>(toShadowRoot(node2 )) : 0;
465 if (!treeScope1 || !treeScope2) { 465 if (!treeScope1 || !treeScope2) {
466 exceptionState.throwDOMException(InvalidAccessError, String::format("The %s node is neither a document node, nor a shadow root.", treeScope1 ? "second" : "first")); 466 exceptionState.throwDOMException(InvalidAccessError, String::format("The %s node is neither a document node, nor a shadow root.", treeScope1 ? "second" : "first"));
467 return 0; 467 return 0;
468 } 468 }
469 return treeScope1->comparePosition(*treeScope2); 469 return treeScope1->comparePosition(*treeScope2);
470 } 470 }
471 471
472 void Internals::pauseAnimations(double pauseTime, ExceptionState& exceptionState ) 472 void Internals::pauseAnimations(double pauseTime, ExceptionState& exceptionState )
473 { 473 {
474 if (pauseTime < 0) { 474 if (pauseTime < 0) {
475 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: indexExceedsMinimumBound("pauseTime", pauseTime, 0.0)); 475 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: indexExceedsMinimumBound("pauseTime", pauseTime, 0.0));
476 return; 476 return;
477 } 477 }
478 478
479 frame()->view()->updateLayoutAndStyleForPainting(); 479 frame()->view()->updateLayoutAndStyleForPainting();
480 frame()->document()->timeline().pauseAnimationsForTesting(pauseTime); 480 frame()->document()->timeline().pauseAnimationsForTesting(pauseTime);
481 } 481 }
482 482
483 bool Internals::hasShadowInsertionPoint(const Node* root, ExceptionState& except ionState) const 483 bool Internals::hasShadowInsertionPoint(const Node* root, ExceptionState& except ionState) const
484 { 484 {
485 if (root && root->isShadowRoot()) 485 ASSERT(root);
486 return toShadowRoot(root)->containsShadowElements(); 486 if (!root->isShadowRoot()) {
487 487 exceptionState.throwDOMException(InvalidAccessError, "The node argument is not a shadow root.");
488 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages::argu mentNullOrIncorrectType(1, "Node")); 488 return 0;
489 return 0; 489 }
490 return toShadowRoot(root)->containsShadowElements();
490 } 491 }
491 492
492 bool Internals::hasContentElement(const Node* root, ExceptionState& exceptionSta te) const 493 bool Internals::hasContentElement(const Node* root, ExceptionState& exceptionSta te) const
493 { 494 {
494 if (root && root->isShadowRoot()) 495 ASSERT(root);
495 return toShadowRoot(root)->containsContentElements(); 496 if (!root->isShadowRoot()) {
496 497 exceptionState.throwDOMException(InvalidAccessError, "The node argument is not a shadow root.");
497 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages::argu mentNullOrIncorrectType(1, "Node")); 498 return 0;
498 return 0; 499 }
500 return toShadowRoot(root)->containsContentElements();
499 } 501 }
500 502
501 size_t Internals::countElementShadow(const Node* root, ExceptionState& exception State) const 503 size_t Internals::countElementShadow(const Node* root, ExceptionState& exception State) const
502 { 504 {
503 if (!root || !root->isShadowRoot()) { 505 ASSERT(root);
504 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node")); 506 if (!root->isShadowRoot()) {
507 exceptionState.throwDOMException(InvalidAccessError, "The node argument is not a shadow root.");
505 return 0; 508 return 0;
506 } 509 }
507 return toShadowRoot(root)->childShadowRootCount(); 510 return toShadowRoot(root)->childShadowRootCount();
508 } 511 }
509 512
510 Node* Internals::nextSiblingByWalker(Node* node, ExceptionState& exceptionState) 513 Node* Internals::nextSiblingByWalker(Node* node)
511 { 514 {
512 if (!node) { 515 ASSERT(node);
513 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
514 return 0;
515 }
516 ComposedTreeWalker walker(node); 516 ComposedTreeWalker walker(node);
517 walker.nextSibling(); 517 walker.nextSibling();
518 return walker.get(); 518 return walker.get();
519 } 519 }
520 520
521 Node* Internals::firstChildByWalker(Node* node, ExceptionState& exceptionState) 521 Node* Internals::firstChildByWalker(Node* node)
522 { 522 {
523 if (!node) { 523 ASSERT(node);
524 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
525 return 0;
526 }
527 ComposedTreeWalker walker(node); 524 ComposedTreeWalker walker(node);
528 walker.firstChild(); 525 walker.firstChild();
529 return walker.get(); 526 return walker.get();
530 } 527 }
531 528
532 Node* Internals::lastChildByWalker(Node* node, ExceptionState& exceptionState) 529 Node* Internals::lastChildByWalker(Node* node)
533 { 530 {
534 if (!node) { 531 ASSERT(node);
535 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
536 return 0;
537 }
538 ComposedTreeWalker walker(node); 532 ComposedTreeWalker walker(node);
539 walker.lastChild(); 533 walker.lastChild();
540 return walker.get(); 534 return walker.get();
541 } 535 }
542 536
543 Node* Internals::nextNodeByWalker(Node* node, ExceptionState& exceptionState) 537 Node* Internals::nextNodeByWalker(Node* node)
544 { 538 {
545 if (!node) { 539 ASSERT(node);
546 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
547 return 0;
548 }
549 ComposedTreeWalker walker(node); 540 ComposedTreeWalker walker(node);
550 walker.next(); 541 walker.next();
551 return walker.get(); 542 return walker.get();
552 } 543 }
553 544
554 Node* Internals::previousNodeByWalker(Node* node, ExceptionState& exceptionState ) 545 Node* Internals::previousNodeByWalker(Node* node)
555 { 546 {
556 if (!node) { 547 ASSERT(node);
557 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
558 return 0;
559 }
560 ComposedTreeWalker walker(node); 548 ComposedTreeWalker walker(node);
561 walker.previous(); 549 walker.previous();
562 return walker.get(); 550 return walker.get();
563 } 551 }
564 552
565 String Internals::elementRenderTreeAsText(Element* element, ExceptionState& exce ptionState) 553 String Internals::elementRenderTreeAsText(Element* element, ExceptionState& exce ptionState)
566 { 554 {
567 if (!element) { 555 ASSERT(element);
568 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
569 return String();
570 }
571
572 String representation = externalRepresentation(element); 556 String representation = externalRepresentation(element);
573 if (representation.isEmpty()) { 557 if (representation.isEmpty()) {
574 exceptionState.throwDOMException(InvalidAccessError, "The element provid ed has no external representation."); 558 exceptionState.throwDOMException(InvalidAccessError, "The element provid ed has no external representation.");
575 return String(); 559 return String();
576 } 560 }
577 561
578 return representation; 562 return representation;
579 } 563 }
580 564
581 PassRefPtrWillBeRawPtr<CSSComputedStyleDeclaration> Internals::computedStyleIncl udingVisitedInfo(Node* node, ExceptionState& exceptionState) const 565 PassRefPtrWillBeRawPtr<CSSStyleDeclaration> Internals::computedStyleIncludingVis itedInfo(Node* node) const
582 { 566 {
583 if (!node) { 567 ASSERT(node);
584 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
585 return nullptr;
586 }
587
588 bool allowVisitedStyle = true; 568 bool allowVisitedStyle = true;
589 return CSSComputedStyleDeclaration::create(node, allowVisitedStyle); 569 return CSSComputedStyleDeclaration::create(node, allowVisitedStyle);
590 } 570 }
591 571
592 ShadowRoot* Internals::shadowRoot(Element* host, ExceptionState& exceptionState) 572 ShadowRoot* Internals::shadowRoot(Element* host)
593 { 573 {
594 // FIXME: Internals::shadowRoot() in tests should be converted to youngestSh adowRoot() or oldestShadowRoot(). 574 // FIXME: Internals::shadowRoot() in tests should be converted to youngestSh adowRoot() or oldestShadowRoot().
595 // https://bugs.webkit.org/show_bug.cgi?id=78465 575 // https://bugs.webkit.org/show_bug.cgi?id=78465
596 return youngestShadowRoot(host, exceptionState); 576 return youngestShadowRoot(host);
597 } 577 }
598 578
599 ShadowRoot* Internals::youngestShadowRoot(Element* host, ExceptionState& excepti onState) 579 ShadowRoot* Internals::youngestShadowRoot(Element* host)
600 { 580 {
601 if (!host) { 581 ASSERT(host);
602 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
603 return 0;
604 }
605
606 if (ElementShadow* shadow = host->shadow()) 582 if (ElementShadow* shadow = host->shadow())
607 return shadow->youngestShadowRoot(); 583 return shadow->youngestShadowRoot();
608 return 0; 584 return 0;
609 } 585 }
610 586
611 ShadowRoot* Internals::oldestShadowRoot(Element* host, ExceptionState& exception State) 587 ShadowRoot* Internals::oldestShadowRoot(Element* host)
612 { 588 {
613 if (!host) { 589 ASSERT(host);
614 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
615 return 0;
616 }
617
618 if (ElementShadow* shadow = host->shadow()) 590 if (ElementShadow* shadow = host->shadow())
619 return shadow->oldestShadowRoot(); 591 return shadow->oldestShadowRoot();
620 return 0; 592 return 0;
621 } 593 }
622 594
623 ShadowRoot* Internals::youngerShadowRoot(Node* shadow, ExceptionState& exception State) 595 ShadowRoot* Internals::youngerShadowRoot(Node* shadow, ExceptionState& exception State)
624 { 596 {
625 if (!shadow || !shadow->isShadowRoot()) { 597 ASSERT(shadow);
626 exceptionState.throwDOMException(InvalidAccessError, "The node provided is not a valid shadow root."); 598 if (!shadow->isShadowRoot()) {
599 exceptionState.throwDOMException(InvalidAccessError, "The node provided is not a shadow root.");
627 return 0; 600 return 0;
628 } 601 }
629 602
630 return toShadowRoot(shadow)->youngerShadowRoot(); 603 return toShadowRoot(shadow)->youngerShadowRoot();
631 } 604 }
632 605
633 String Internals::shadowRootType(const Node* root, ExceptionState& exceptionStat e) const 606 String Internals::shadowRootType(const Node* root, ExceptionState& exceptionStat e) const
634 { 607 {
635 if (!root || !root->isShadowRoot()) { 608 ASSERT(root);
636 exceptionState.throwDOMException(InvalidAccessError, "The node provided is not a valid shadow root."); 609 if (!root->isShadowRoot()) {
610 exceptionState.throwDOMException(InvalidAccessError, "The node provided is not a shadow root.");
637 return String(); 611 return String();
638 } 612 }
639 613
640 switch (toShadowRoot(root)->type()) { 614 switch (toShadowRoot(root)->type()) {
641 case ShadowRoot::UserAgentShadowRoot: 615 case ShadowRoot::UserAgentShadowRoot:
642 return String("UserAgentShadowRoot"); 616 return String("UserAgentShadowRoot");
643 case ShadowRoot::AuthorShadowRoot: 617 case ShadowRoot::AuthorShadowRoot:
644 return String("AuthorShadowRoot"); 618 return String("AuthorShadowRoot");
645 default: 619 default:
646 ASSERT_NOT_REACHED(); 620 ASSERT_NOT_REACHED();
647 return String("Unknown"); 621 return String("Unknown");
648 } 622 }
649 } 623 }
650 624
651 const AtomicString& Internals::shadowPseudoId(Element* element, ExceptionState& exceptionState) 625 const AtomicString& Internals::shadowPseudoId(Element* element)
652 { 626 {
653 if (!element) { 627 ASSERT(element);
654 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
655 return nullAtom;
656 }
657
658 return element->shadowPseudoId(); 628 return element->shadowPseudoId();
659 } 629 }
660 630
661 void Internals::setShadowPseudoId(Element* element, const AtomicString& id, Exce ptionState& exceptionState) 631 void Internals::setShadowPseudoId(Element* element, const AtomicString& id)
662 { 632 {
663 if (!element) { 633 ASSERT(element);
664 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
665 return;
666 }
667
668 return element->setShadowPseudoId(id); 634 return element->setShadowPseudoId(id);
669 } 635 }
670 636
671 String Internals::visiblePlaceholder(Element* element) 637 String Internals::visiblePlaceholder(Element* element)
672 { 638 {
673 if (element && isHTMLTextFormControlElement(*element)) { 639 if (element && isHTMLTextFormControlElement(*element)) {
674 if (toHTMLTextFormControlElement(element)->placeholderShouldBeVisible()) 640 if (toHTMLTextFormControlElement(element)->placeholderShouldBeVisible())
675 return toHTMLTextFormControlElement(element)->placeholderElement()-> textContent(); 641 return toHTMLTextFormControlElement(element)->placeholderElement()-> textContent();
676 } 642 }
677 643
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 { 723 {
758 Document* document = contextDocument(); 724 Document* document = contextDocument();
759 if (!document || !document->frame()) { 725 if (!document || !document->frame()) {
760 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "No context document can be obtained."); 726 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "No context document can be obtained.");
761 return ClientRect::create(); 727 return ClientRect::create();
762 } 728 }
763 729
764 return ClientRect::create(document->frame()->selection().absoluteCaretBounds ()); 730 return ClientRect::create(document->frame()->selection().absoluteCaretBounds ());
765 } 731 }
766 732
767 PassRefPtrWillBeRawPtr<ClientRect> Internals::boundingBox(Element* element, Exce ptionState& exceptionState) 733 PassRefPtrWillBeRawPtr<ClientRect> Internals::boundingBox(Element* element)
768 { 734 {
769 if (!element) { 735 ASSERT(element);
770 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
771 return ClientRect::create();
772 }
773 736
774 element->document().updateLayoutIgnorePendingStylesheets(); 737 element->document().updateLayoutIgnorePendingStylesheets();
775 RenderObject* renderer = element->renderer(); 738 RenderObject* renderer = element->renderer();
776 if (!renderer) 739 if (!renderer)
777 return ClientRect::create(); 740 return ClientRect::create();
778 return ClientRect::create(renderer->absoluteBoundingBoxRectIgnoringTransform s()); 741 return ClientRect::create(renderer->absoluteBoundingBoxRectIgnoringTransform s());
779 } 742 }
780 743
781 unsigned Internals::markerCountForNode(Node* node, const String& markerType, Exc eptionState& exceptionState) 744 unsigned Internals::markerCountForNode(Node* node, const String& markerType, Exc eptionState& exceptionState)
782 { 745 {
783 if (!node) { 746 ASSERT(node);
784 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
785 return 0;
786 }
787
788 DocumentMarker::MarkerTypes markerTypes = 0; 747 DocumentMarker::MarkerTypes markerTypes = 0;
789 if (!markerTypesFrom(markerType, markerTypes)) { 748 if (!markerTypesFrom(markerType, markerTypes)) {
790 exceptionState.throwDOMException(SyntaxError, "The marker type provided ('" + markerType + "') is invalid."); 749 exceptionState.throwDOMException(SyntaxError, "The marker type provided ('" + markerType + "') is invalid.");
791 return 0; 750 return 0;
792 } 751 }
793 752
794 return node->document().markers().markersFor(node, markerTypes).size(); 753 return node->document().markers().markersFor(node, markerTypes).size();
795 } 754 }
796 755
797 unsigned Internals::activeMarkerCountForNode(Node* node, ExceptionState& excepti onState) 756 unsigned Internals::activeMarkerCountForNode(Node* node)
798 { 757 {
799 if (!node) { 758 ASSERT(node);
800 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
801 return 0;
802 }
803 759
804 // Only TextMatch markers can be active. 760 // Only TextMatch markers can be active.
805 DocumentMarker::MarkerType markerType = DocumentMarker::TextMatch; 761 DocumentMarker::MarkerType markerType = DocumentMarker::TextMatch;
806 DocumentMarkerVector markers = node->document().markers().markersFor(node, m arkerType); 762 DocumentMarkerVector markers = node->document().markers().markersFor(node, m arkerType);
807 763
808 unsigned activeMarkerCount = 0; 764 unsigned activeMarkerCount = 0;
809 for (DocumentMarkerVector::iterator iter = markers.begin(); iter != markers. end(); ++iter) { 765 for (DocumentMarkerVector::iterator iter = markers.begin(); iter != markers. end(); ++iter) {
810 if ((*iter)->activeMatch()) 766 if ((*iter)->activeMatch())
811 activeMarkerCount++; 767 activeMarkerCount++;
812 } 768 }
813 769
814 return activeMarkerCount; 770 return activeMarkerCount;
815 } 771 }
816 772
817 DocumentMarker* Internals::markerAt(Node* node, const String& markerType, unsign ed index, ExceptionState& exceptionState) 773 DocumentMarker* Internals::markerAt(Node* node, const String& markerType, unsign ed index, ExceptionState& exceptionState)
818 { 774 {
819 if (!node) { 775 ASSERT(node);
820 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
821 return 0;
822 }
823
824 DocumentMarker::MarkerTypes markerTypes = 0; 776 DocumentMarker::MarkerTypes markerTypes = 0;
825 if (!markerTypesFrom(markerType, markerTypes)) { 777 if (!markerTypesFrom(markerType, markerTypes)) {
826 exceptionState.throwDOMException(SyntaxError, "The marker type provided ('" + markerType + "') is invalid."); 778 exceptionState.throwDOMException(SyntaxError, "The marker type provided ('" + markerType + "') is invalid.");
827 return 0; 779 return 0;
828 } 780 }
829 781
830 DocumentMarkerVector markers = node->document().markers().markersFor(node, m arkerTypes); 782 DocumentMarkerVector markers = node->document().markers().markersFor(node, m arkerTypes);
831 if (markers.size() <= index) 783 if (markers.size() <= index)
832 return 0; 784 return 0;
833 return markers[index]; 785 return markers[index];
834 } 786 }
835 787
836 PassRefPtrWillBeRawPtr<Range> Internals::markerRangeForNode(Node* node, const St ring& markerType, unsigned index, ExceptionState& exceptionState) 788 PassRefPtrWillBeRawPtr<Range> Internals::markerRangeForNode(Node* node, const St ring& markerType, unsigned index, ExceptionState& exceptionState)
837 { 789 {
790 ASSERT(node);
838 DocumentMarker* marker = markerAt(node, markerType, index, exceptionState); 791 DocumentMarker* marker = markerAt(node, markerType, index, exceptionState);
839 if (!marker) 792 if (!marker)
840 return nullptr; 793 return nullptr;
841 return Range::create(node->document(), node, marker->startOffset(), node, ma rker->endOffset()); 794 return Range::create(node->document(), node, marker->startOffset(), node, ma rker->endOffset());
842 } 795 }
843 796
844 String Internals::markerDescriptionForNode(Node* node, const String& markerType, unsigned index, ExceptionState& exceptionState) 797 String Internals::markerDescriptionForNode(Node* node, const String& markerType, unsigned index, ExceptionState& exceptionState)
845 { 798 {
846 DocumentMarker* marker = markerAt(node, markerType, index, exceptionState); 799 DocumentMarker* marker = markerAt(node, markerType, index, exceptionState);
847 if (!marker) 800 if (!marker)
848 return String(); 801 return String();
849 return marker->description(); 802 return marker->description();
850 } 803 }
851 804
852 void Internals::addTextMatchMarker(const Range* range, bool isActive) 805 void Internals::addTextMatchMarker(const Range* range, bool isActive)
853 { 806 {
807 ASSERT(range);
854 range->ownerDocument().updateLayoutIgnorePendingStylesheets(); 808 range->ownerDocument().updateLayoutIgnorePendingStylesheets();
855 range->ownerDocument().markers().addTextMatchMarker(range, isActive); 809 range->ownerDocument().markers().addTextMatchMarker(range, isActive);
856 } 810 }
857 811
858 void Internals::setMarkersActive(Node* node, unsigned startOffset, unsigned endO ffset, bool active, ExceptionState& exceptionState) 812 void Internals::setMarkersActive(Node* node, unsigned startOffset, unsigned endO ffset, bool active)
859 { 813 {
860 if (!node) { 814 ASSERT(node);
861 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Node"));
862 return;
863 }
864
865 node->document().markers().setMarkersActive(node, startOffset, endOffset, ac tive); 815 node->document().markers().setMarkersActive(node, startOffset, endOffset, ac tive);
866 } 816 }
867 817
868 void Internals::setMarkedTextMatchesAreHighlighted(Document* document, bool high light, ExceptionState&) 818 void Internals::setMarkedTextMatchesAreHighlighted(Document* document, bool high light)
869 { 819 {
870 if (!document || !document->frame()) 820 if (!document || !document->frame())
871 return; 821 return;
872 822
873 document->frame()->editor().setMarkedTextMatchesAreHighlighted(highlight); 823 document->frame()->editor().setMarkedTextMatchesAreHighlighted(highlight);
874 } 824 }
875 825
876 void Internals::setScrollViewPosition(Document* document, long x, long y, Except ionState& exceptionState) 826 void Internals::setScrollViewPosition(Document* document, long x, long y, Except ionState& exceptionState)
877 { 827 {
878 if (!document || !document->view()) { 828 ASSERT(document);
879 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's view cannot be retrieved." : "The document provided is invalid."); 829 if (!document->view()) {
830 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
880 return; 831 return;
881 } 832 }
882 833
883 FrameView* frameView = document->view(); 834 FrameView* frameView = document->view();
884 bool constrainsScrollingToContentEdgeOldValue = frameView->constrainsScrolli ngToContentEdge(); 835 bool constrainsScrollingToContentEdgeOldValue = frameView->constrainsScrolli ngToContentEdge();
885 bool scrollbarsSuppressedOldValue = frameView->scrollbarsSuppressed(); 836 bool scrollbarsSuppressedOldValue = frameView->scrollbarsSuppressed();
886 837
887 frameView->setConstrainsScrollingToContentEdge(false); 838 frameView->setConstrainsScrollingToContentEdge(false);
888 frameView->setScrollbarsSuppressed(false); 839 frameView->setScrollbarsSuppressed(false);
889 frameView->setScrollOffsetFromInternals(IntPoint(x, y)); 840 frameView->setScrollOffsetFromInternals(IntPoint(x, y));
890 frameView->setScrollbarsSuppressed(scrollbarsSuppressedOldValue); 841 frameView->setScrollbarsSuppressed(scrollbarsSuppressedOldValue);
891 frameView->setConstrainsScrollingToContentEdge(constrainsScrollingToContentE dgeOldValue); 842 frameView->setConstrainsScrollingToContentEdge(constrainsScrollingToContentE dgeOldValue);
892 } 843 }
893 844
894 String Internals::viewportAsText(Document* document, float, int availableWidth, int availableHeight, ExceptionState& exceptionState) 845 String Internals::viewportAsText(Document* document, float, int availableWidth, int availableHeight, ExceptionState& exceptionState)
895 { 846 {
896 if (!document || !document->page()) { 847 ASSERT(document);
897 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's page cannot be retrieved." : "The document provided is invalid."); 848 if (!document->page()) {
849 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
898 return String(); 850 return String();
899 } 851 }
900 852
901 document->updateLayoutIgnorePendingStylesheets(); 853 document->updateLayoutIgnorePendingStylesheets();
902 854
903 Page* page = document->page(); 855 Page* page = document->page();
904 856
905 // Update initial viewport size. 857 // Update initial viewport size.
906 IntSize initialViewportSize(availableWidth, availableHeight); 858 IntSize initialViewportSize(availableWidth, availableHeight);
907 document->page()->deprecatedLocalMainFrame()->view()->setFrameRect(IntRect(I ntPoint::zero(), initialViewportSize)); 859 document->page()->deprecatedLocalMainFrame()->view()->setFrameRect(IntRect(I ntPoint::zero(), initialViewportSize));
(...skipping 18 matching lines...) Expand all
926 builder.append(String::number(constraints.maximumScale)); 878 builder.append(String::number(constraints.maximumScale));
927 879
928 builder.appendLiteral("] and userScalable "); 880 builder.appendLiteral("] and userScalable ");
929 builder.append(description.userZoom ? "true" : "false"); 881 builder.append(description.userZoom ? "true" : "false");
930 882
931 return builder.toString(); 883 return builder.toString();
932 } 884 }
933 885
934 bool Internals::wasLastChangeUserEdit(Element* textField, ExceptionState& except ionState) 886 bool Internals::wasLastChangeUserEdit(Element* textField, ExceptionState& except ionState)
935 { 887 {
936 if (!textField) { 888 ASSERT(textField);
937 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
938 return false;
939 }
940
941 if (isHTMLInputElement(*textField)) 889 if (isHTMLInputElement(*textField))
942 return toHTMLInputElement(*textField).lastChangeWasUserEdit(); 890 return toHTMLInputElement(*textField).lastChangeWasUserEdit();
943 891
944 if (isHTMLTextAreaElement(*textField)) 892 if (isHTMLTextAreaElement(*textField))
945 return toHTMLTextAreaElement(*textField).lastChangeWasUserEdit(); 893 return toHTMLTextAreaElement(*textField).lastChangeWasUserEdit();
946 894
947 exceptionState.throwDOMException(InvalidNodeTypeError, "The element provided is not a TEXTAREA."); 895 exceptionState.throwDOMException(InvalidNodeTypeError, "The element provided is not a TEXTAREA.");
948 return false; 896 return false;
949 } 897 }
950 898
951 bool Internals::elementShouldAutoComplete(Element* element, ExceptionState& exce ptionState) 899 bool Internals::elementShouldAutoComplete(Element* element, ExceptionState& exce ptionState)
952 { 900 {
953 if (!element) { 901 ASSERT(element);
954 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
955 return false;
956 }
957
958 if (isHTMLInputElement(*element)) 902 if (isHTMLInputElement(*element))
959 return toHTMLInputElement(*element).shouldAutocomplete(); 903 return toHTMLInputElement(*element).shouldAutocomplete();
960 904
961 exceptionState.throwDOMException(InvalidNodeTypeError, "The element provided is not an INPUT."); 905 exceptionState.throwDOMException(InvalidNodeTypeError, "The element provided is not an INPUT.");
962 return false; 906 return false;
963 } 907 }
964 908
965 String Internals::suggestedValue(Element* element, ExceptionState& exceptionStat e) 909 String Internals::suggestedValue(Element* element, ExceptionState& exceptionStat e)
966 { 910 {
967 if (!element) { 911 ASSERT(element);
968 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
969 return String();
970 }
971
972 if (!element->isFormControlElement()) { 912 if (!element->isFormControlElement()) {
973 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not a form control element."); 913 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not a form control element.");
974 return String(); 914 return String();
975 } 915 }
976 916
977 String suggestedValue; 917 String suggestedValue;
978 if (isHTMLInputElement(*element)) 918 if (isHTMLInputElement(*element))
979 suggestedValue = toHTMLInputElement(*element).suggestedValue(); 919 suggestedValue = toHTMLInputElement(*element).suggestedValue();
980 920
981 if (isHTMLTextAreaElement(*element)) 921 if (isHTMLTextAreaElement(*element))
982 suggestedValue = toHTMLTextAreaElement(*element).suggestedValue(); 922 suggestedValue = toHTMLTextAreaElement(*element).suggestedValue();
983 923
984 if (isHTMLSelectElement(*element)) 924 if (isHTMLSelectElement(*element))
985 suggestedValue = toHTMLSelectElement(*element).suggestedValue(); 925 suggestedValue = toHTMLSelectElement(*element).suggestedValue();
986 926
987 return suggestedValue; 927 return suggestedValue;
988 } 928 }
989 929
990 void Internals::setSuggestedValue(Element* element, const String& value, Excepti onState& exceptionState) 930 void Internals::setSuggestedValue(Element* element, const String& value, Excepti onState& exceptionState)
991 { 931 {
992 if (!element) { 932 ASSERT(element);
993 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
994 return;
995 }
996
997 if (!element->isFormControlElement()) { 933 if (!element->isFormControlElement()) {
998 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not a form control element."); 934 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not a form control element.");
999 return; 935 return;
1000 } 936 }
1001 937
1002 if (isHTMLInputElement(*element)) 938 if (isHTMLInputElement(*element))
1003 toHTMLInputElement(*element).setSuggestedValue(value); 939 toHTMLInputElement(*element).setSuggestedValue(value);
1004 940
1005 if (isHTMLTextAreaElement(*element)) 941 if (isHTMLTextAreaElement(*element))
1006 toHTMLTextAreaElement(*element).setSuggestedValue(value); 942 toHTMLTextAreaElement(*element).setSuggestedValue(value);
1007 943
1008 if (isHTMLSelectElement(*element)) 944 if (isHTMLSelectElement(*element))
1009 toHTMLSelectElement(*element).setSuggestedValue(value); 945 toHTMLSelectElement(*element).setSuggestedValue(value);
1010 } 946 }
1011 947
1012 void Internals::setEditingValue(Element* element, const String& value, Exception State& exceptionState) 948 void Internals::setEditingValue(Element* element, const String& value, Exception State& exceptionState)
1013 { 949 {
1014 if (!element) { 950 ASSERT(element);
1015 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
1016 return;
1017 }
1018
1019 if (!isHTMLInputElement(*element)) { 951 if (!isHTMLInputElement(*element)) {
1020 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not an INPUT."); 952 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not an INPUT.");
1021 return; 953 return;
1022 } 954 }
1023 955
1024 toHTMLInputElement(*element).setEditingValue(value); 956 toHTMLInputElement(*element).setEditingValue(value);
1025 } 957 }
1026 958
1027 void Internals::setAutofilled(Element* element, bool enabled, ExceptionState& ex ceptionState) 959 void Internals::setAutofilled(Element* element, bool enabled, ExceptionState& ex ceptionState)
1028 { 960 {
961 ASSERT(element);
1029 if (!element->isFormControlElement()) { 962 if (!element->isFormControlElement()) {
1030 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not a form control element."); 963 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not a form control element.");
1031 return; 964 return;
1032 } 965 }
1033 toHTMLFormControlElement(element)->setAutofilled(enabled); 966 toHTMLFormControlElement(element)->setAutofilled(enabled);
1034 } 967 }
1035 968
1036 void Internals::scrollElementToRect(Element* element, long x, long y, long w, lo ng h, ExceptionState& exceptionState) 969 void Internals::scrollElementToRect(Element* element, long x, long y, long w, lo ng h, ExceptionState& exceptionState)
1037 { 970 {
1038 if (!element || !element->document().view()) { 971 ASSERT(element);
972 if (!element->document().view()) {
1039 exceptionState.throwDOMException(InvalidNodeTypeError, element ? "No vie w can be obtained from the provided element's document." : ExceptionMessages::ar gumentNullOrIncorrectType(1, "Element")); 973 exceptionState.throwDOMException(InvalidNodeTypeError, element ? "No vie w can be obtained from the provided element's document." : ExceptionMessages::ar gumentNullOrIncorrectType(1, "Element"));
1040 return; 974 return;
1041 } 975 }
1042 FrameView* frameView = element->document().view(); 976 FrameView* frameView = element->document().view();
1043 frameView->scrollElementToRect(element, IntRect(x, y, w, h)); 977 frameView->scrollElementToRect(element, IntRect(x, y, w, h));
1044 } 978 }
1045 979
1046 PassRefPtrWillBeRawPtr<Range> Internals::rangeFromLocationAndLength(Element* sco pe, int rangeLocation, int rangeLength, ExceptionState& exceptionState) 980 PassRefPtrWillBeRawPtr<Range> Internals::rangeFromLocationAndLength(Element* sco pe, int rangeLocation, int rangeLength)
1047 { 981 {
1048 if (!scope) { 982 ASSERT(scope);
1049 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
1050 return nullptr;
1051 }
1052 983
1053 // TextIterator depends on Layout information, make sure layout it up to dat e. 984 // TextIterator depends on Layout information, make sure layout it up to dat e.
1054 scope->document().updateLayoutIgnorePendingStylesheets(); 985 scope->document().updateLayoutIgnorePendingStylesheets();
1055 986
1056 return PlainTextRange(rangeLocation, rangeLocation + rangeLength).createRang e(*scope); 987 return PlainTextRange(rangeLocation, rangeLocation + rangeLength).createRang e(*scope);
1057 } 988 }
1058 989
1059 unsigned Internals::locationFromRange(Element* scope, const Range* range, Except ionState& exceptionState) 990 unsigned Internals::locationFromRange(Element* scope, const Range* range)
1060 { 991 {
1061 if (!scope || !range) { 992 ASSERT(scope && range);
1062 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(scope ? 2 : 1, scope ? "Range" : "Element"));
1063 return 0;
1064 }
1065
1066 // PlainTextRange depends on Layout information, make sure layout it up to d ate. 993 // PlainTextRange depends on Layout information, make sure layout it up to d ate.
1067 scope->document().updateLayoutIgnorePendingStylesheets(); 994 scope->document().updateLayoutIgnorePendingStylesheets();
1068 995
1069 return PlainTextRange::create(*scope, *range).start(); 996 return PlainTextRange::create(*scope, *range).start();
1070 } 997 }
1071 998
1072 unsigned Internals::lengthFromRange(Element* scope, const Range* range, Exceptio nState& exceptionState) 999 unsigned Internals::lengthFromRange(Element* scope, const Range* range)
1073 { 1000 {
1074 if (!scope || !range) { 1001 ASSERT(scope && range);
1075 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(scope ? 2 : 1, scope ? "Range" : "Element"));
1076 return 0;
1077 }
1078
1079 // PlainTextRange depends on Layout information, make sure layout it up to d ate. 1002 // PlainTextRange depends on Layout information, make sure layout it up to d ate.
1080 scope->document().updateLayoutIgnorePendingStylesheets(); 1003 scope->document().updateLayoutIgnorePendingStylesheets();
1081 1004
1082 return PlainTextRange::create(*scope, *range).length(); 1005 return PlainTextRange::create(*scope, *range).length();
1083 } 1006 }
1084 1007
1085 String Internals::rangeAsText(const Range* range, ExceptionState& exceptionState ) 1008 String Internals::rangeAsText(const Range* range)
1086 { 1009 {
1087 if (!range) { 1010 ASSERT(range);
1088 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Range"));
1089 return String();
1090 }
1091
1092 return range->text(); 1011 return range->text();
1093 } 1012 }
1094 1013
1095 // FIXME: The next four functions are very similar - combine them once 1014 // FIXME: The next four functions are very similar - combine them once
1096 // bestClickableNode/bestContextMenuNode have been combined.. 1015 // bestClickableNode/bestContextMenuNode have been combined..
1097 1016
1098 PassRefPtrWillBeRawPtr<WebKitPoint> Internals::touchPositionAdjustedToBestClicka bleNode(long x, long y, long width, long height, Document* document, ExceptionSt ate& exceptionState) 1017 PassRefPtrWillBeRawPtr<WebKitPoint> Internals::touchPositionAdjustedToBestClicka bleNode(long x, long y, long width, long height, Document* document, ExceptionSt ate& exceptionState)
1099 { 1018 {
1100 if (!document || !document->frame()) { 1019 ASSERT(document);
1101 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1020 if (!document->frame()) {
1021 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1102 return nullptr; 1022 return nullptr;
1103 } 1023 }
1104 1024
1105 document->updateLayout(); 1025 document->updateLayout();
1106 1026
1107 IntSize radius(width / 2, height / 2); 1027 IntSize radius(width / 2, height / 2);
1108 IntPoint point(x + radius.width(), y + radius.height()); 1028 IntPoint point(x + radius.width(), y + radius.height());
1109 1029
1110 EventHandler& eventHandler = document->frame()->eventHandler(); 1030 EventHandler& eventHandler = document->frame()->eventHandler();
1111 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point); 1031 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point);
1112 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius); 1032 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius);
1113 1033
1114 Node* targetNode; 1034 Node* targetNode;
1115 IntPoint adjustedPoint; 1035 IntPoint adjustedPoint;
1116 1036
1117 bool foundNode = eventHandler.bestClickableNodeForHitTestResult(result, adju stedPoint, targetNode); 1037 bool foundNode = eventHandler.bestClickableNodeForHitTestResult(result, adju stedPoint, targetNode);
1118 if (foundNode) 1038 if (foundNode)
1119 return WebKitPoint::create(adjustedPoint.x(), adjustedPoint.y()); 1039 return WebKitPoint::create(adjustedPoint.x(), adjustedPoint.y());
1120 1040
1121 return nullptr; 1041 return nullptr;
1122 } 1042 }
1123 1043
1124 Node* Internals::touchNodeAdjustedToBestClickableNode(long x, long y, long width , long height, Document* document, ExceptionState& exceptionState) 1044 Node* Internals::touchNodeAdjustedToBestClickableNode(long x, long y, long width , long height, Document* document, ExceptionState& exceptionState)
1125 { 1045 {
1126 if (!document || !document->frame()) { 1046 ASSERT(document);
1127 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1047 if (!document->frame()) {
1048 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1128 return 0; 1049 return 0;
1129 } 1050 }
1130 1051
1131 document->updateLayout(); 1052 document->updateLayout();
1132 1053
1133 IntSize radius(width / 2, height / 2); 1054 IntSize radius(width / 2, height / 2);
1134 IntPoint point(x + radius.width(), y + radius.height()); 1055 IntPoint point(x + radius.width(), y + radius.height());
1135 1056
1136 EventHandler& eventHandler = document->frame()->eventHandler(); 1057 EventHandler& eventHandler = document->frame()->eventHandler();
1137 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point); 1058 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point);
1138 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius); 1059 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius);
1139 1060
1140 Node* targetNode; 1061 Node* targetNode;
1141 IntPoint adjustedPoint; 1062 IntPoint adjustedPoint;
1142 document->frame()->eventHandler().bestClickableNodeForHitTestResult(result, adjustedPoint, targetNode); 1063 document->frame()->eventHandler().bestClickableNodeForHitTestResult(result, adjustedPoint, targetNode);
1143 return targetNode; 1064 return targetNode;
1144 } 1065 }
1145 1066
1146 PassRefPtrWillBeRawPtr<WebKitPoint> Internals::touchPositionAdjustedToBestContex tMenuNode(long x, long y, long width, long height, Document* document, Exception State& exceptionState) 1067 PassRefPtrWillBeRawPtr<WebKitPoint> Internals::touchPositionAdjustedToBestContex tMenuNode(long x, long y, long width, long height, Document* document, Exception State& exceptionState)
1147 { 1068 {
1148 if (!document || !document->frame()) { 1069 ASSERT(document);
1149 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1070 if (!document->frame()) {
1071 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1150 return nullptr; 1072 return nullptr;
1151 } 1073 }
1152 1074
1153 document->updateLayout(); 1075 document->updateLayout();
1154 1076
1155 IntSize radius(width / 2, height / 2); 1077 IntSize radius(width / 2, height / 2);
1156 IntPoint point(x + radius.width(), y + radius.height()); 1078 IntPoint point(x + radius.width(), y + radius.height());
1157 1079
1158 EventHandler& eventHandler = document->frame()->eventHandler(); 1080 EventHandler& eventHandler = document->frame()->eventHandler();
1159 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point); 1081 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point);
1160 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius); 1082 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius);
1161 1083
1162 Node* targetNode = 0; 1084 Node* targetNode = 0;
1163 IntPoint adjustedPoint; 1085 IntPoint adjustedPoint;
1164 1086
1165 bool foundNode = eventHandler.bestContextMenuNodeForHitTestResult(result, ad justedPoint, targetNode); 1087 bool foundNode = eventHandler.bestContextMenuNodeForHitTestResult(result, ad justedPoint, targetNode);
1166 if (foundNode) 1088 if (foundNode)
1167 return WebKitPoint::create(adjustedPoint.x(), adjustedPoint.y()); 1089 return WebKitPoint::create(adjustedPoint.x(), adjustedPoint.y());
1168 1090
1169 return WebKitPoint::create(x, y); 1091 return WebKitPoint::create(x, y);
1170 } 1092 }
1171 1093
1172 Node* Internals::touchNodeAdjustedToBestContextMenuNode(long x, long y, long wid th, long height, Document* document, ExceptionState& exceptionState) 1094 Node* Internals::touchNodeAdjustedToBestContextMenuNode(long x, long y, long wid th, long height, Document* document, ExceptionState& exceptionState)
1173 { 1095 {
1174 if (!document || !document->frame()) { 1096 ASSERT(document);
1175 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1097 if (!document->frame()) {
1098 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1176 return 0; 1099 return 0;
1177 } 1100 }
1178 1101
1179 document->updateLayout(); 1102 document->updateLayout();
1180 1103
1181 IntSize radius(width / 2, height / 2); 1104 IntSize radius(width / 2, height / 2);
1182 IntPoint point(x + radius.width(), y + radius.height()); 1105 IntPoint point(x + radius.width(), y + radius.height());
1183 1106
1184 EventHandler& eventHandler = document->frame()->eventHandler(); 1107 EventHandler& eventHandler = document->frame()->eventHandler();
1185 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point); 1108 IntPoint hitTestPoint = document->frame()->view()->windowToContents(point);
1186 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius); 1109 HitTestResult result = eventHandler.hitTestResultAtPoint(hitTestPoint, HitTe stRequest::ReadOnly | HitTestRequest::Active, radius);
1187 1110
1188 Node* targetNode = 0; 1111 Node* targetNode = 0;
1189 IntPoint adjustedPoint; 1112 IntPoint adjustedPoint;
1190 eventHandler.bestContextMenuNodeForHitTestResult(result, adjustedPoint, targ etNode); 1113 eventHandler.bestContextMenuNodeForHitTestResult(result, adjustedPoint, targ etNode);
1191 return targetNode; 1114 return targetNode;
1192 } 1115 }
1193 1116
1194 PassRefPtrWillBeRawPtr<ClientRect> Internals::bestZoomableAreaForTouchPoint(long x, long y, long width, long height, Document* document, ExceptionState& excepti onState) 1117 PassRefPtrWillBeRawPtr<ClientRect> Internals::bestZoomableAreaForTouchPoint(long x, long y, long width, long height, Document* document, ExceptionState& excepti onState)
1195 { 1118 {
1196 if (!document || !document->frame()) { 1119 ASSERT(document);
1197 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1120 if (!document->frame()) {
1121 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1198 return nullptr; 1122 return nullptr;
1199 } 1123 }
1200 1124
1201 document->updateLayout(); 1125 document->updateLayout();
1202 1126
1203 IntSize radius(width / 2, height / 2); 1127 IntSize radius(width / 2, height / 2);
1204 IntPoint point(x + radius.width(), y + radius.height()); 1128 IntPoint point(x + radius.width(), y + radius.height());
1205 1129
1206 Node* targetNode; 1130 Node* targetNode;
1207 IntRect zoomableArea; 1131 IntRect zoomableArea;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1245 // Optimally, the bindings generator would pass a Vector<AtomicString> here but 1169 // Optimally, the bindings generator would pass a Vector<AtomicString> here but
1246 // this is not supported yet. 1170 // this is not supported yet.
1247 void Internals::setUserPreferredLanguages(const Vector<String>& languages) 1171 void Internals::setUserPreferredLanguages(const Vector<String>& languages)
1248 { 1172 {
1249 Vector<AtomicString> atomicLanguages; 1173 Vector<AtomicString> atomicLanguages;
1250 for (size_t i = 0; i < languages.size(); ++i) 1174 for (size_t i = 0; i < languages.size(); ++i)
1251 atomicLanguages.append(AtomicString(languages[i])); 1175 atomicLanguages.append(AtomicString(languages[i]));
1252 blink::overrideUserPreferredLanguages(atomicLanguages); 1176 blink::overrideUserPreferredLanguages(atomicLanguages);
1253 } 1177 }
1254 1178
1255 unsigned Internals::activeDOMObjectCount(Document* document, ExceptionState& exc eptionState) 1179 unsigned Internals::activeDOMObjectCount(Document* document)
1256 { 1180 {
1257 if (!document) { 1181 ASSERT(document);
1258 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
1259 return 0;
1260 }
1261
1262 return document->activeDOMObjectCount(); 1182 return document->activeDOMObjectCount();
1263 } 1183 }
1264 1184
1265 static unsigned eventHandlerCount(Document& document, EventHandlerRegistry::Even tHandlerClass handlerClass) 1185 static unsigned eventHandlerCount(Document& document, EventHandlerRegistry::Even tHandlerClass handlerClass)
1266 { 1186 {
1267 if (!document.frameHost()) 1187 if (!document.frameHost())
1268 return 0; 1188 return 0;
1269 EventHandlerRegistry* registry = &document.frameHost()->eventHandlerRegistry (); 1189 EventHandlerRegistry* registry = &document.frameHost()->eventHandlerRegistry ();
1270 unsigned count = 0; 1190 unsigned count = 0;
1271 const EventTargetSet* targets = registry->eventHandlerTargets(handlerClass); 1191 const EventTargetSet* targets = registry->eventHandlerTargets(handlerClass);
1272 if (targets) { 1192 if (targets) {
1273 for (EventTargetSet::const_iterator iter = targets->begin(); iter != tar gets->end(); ++iter) 1193 for (EventTargetSet::const_iterator iter = targets->begin(); iter != tar gets->end(); ++iter)
1274 count += iter->value; 1194 count += iter->value;
1275 } 1195 }
1276 return count; 1196 return count;
1277 } 1197 }
1278 1198
1279 unsigned Internals::wheelEventHandlerCount(Document* document, ExceptionState& e xceptionState) 1199 unsigned Internals::wheelEventHandlerCount(Document* document)
1280 { 1200 {
1281 if (!document) { 1201 ASSERT(document);
1282 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
1283 return 0;
1284 }
1285
1286 return eventHandlerCount(*document, EventHandlerRegistry::WheelEvent); 1202 return eventHandlerCount(*document, EventHandlerRegistry::WheelEvent);
1287 } 1203 }
1288 1204
1289 unsigned Internals::scrollEventHandlerCount(Document* document, ExceptionState& exceptionState) 1205 unsigned Internals::scrollEventHandlerCount(Document* document)
1290 { 1206 {
1291 if (!document) { 1207 ASSERT(document);
1292 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
1293 return 0;
1294 }
1295
1296 return eventHandlerCount(*document, EventHandlerRegistry::ScrollEvent); 1208 return eventHandlerCount(*document, EventHandlerRegistry::ScrollEvent);
1297 } 1209 }
1298 1210
1299 unsigned Internals::touchEventHandlerCount(Document* document, ExceptionState& e xceptionState) 1211 unsigned Internals::touchEventHandlerCount(Document* document)
1300 { 1212 {
1301 if (!document) { 1213 ASSERT(document);
1302 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
1303 return 0;
1304 }
1305
1306 const TouchEventTargetSet* touchHandlers = document->touchEventTargets(); 1214 const TouchEventTargetSet* touchHandlers = document->touchEventTargets();
1307 if (!touchHandlers) 1215 if (!touchHandlers)
1308 return 0; 1216 return 0;
1309 1217
1310 unsigned count = 0; 1218 unsigned count = 0;
1311 for (TouchEventTargetSet::const_iterator iter = touchHandlers->begin(); iter != touchHandlers->end(); ++iter) 1219 for (TouchEventTargetSet::const_iterator iter = touchHandlers->begin(); iter != touchHandlers->end(); ++iter)
1312 count += iter->value; 1220 count += iter->value;
1313 return count; 1221 return count;
1314 } 1222 }
1315 1223
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1430 } 1338 }
1431 } 1339 }
1432 1340
1433 size_t numChildren = graphicsLayer->children().size(); 1341 size_t numChildren = graphicsLayer->children().size();
1434 for (size_t i = 0; i < numChildren; ++i) 1342 for (size_t i = 0; i < numChildren; ++i)
1435 accumulateLayerRectList(compositor, graphicsLayer->children()[i], rects) ; 1343 accumulateLayerRectList(compositor, graphicsLayer->children()[i], rects) ;
1436 } 1344 }
1437 1345
1438 PassRefPtrWillBeRawPtr<LayerRectList> Internals::touchEventTargetLayerRects(Docu ment* document, ExceptionState& exceptionState) 1346 PassRefPtrWillBeRawPtr<LayerRectList> Internals::touchEventTargetLayerRects(Docu ment* document, ExceptionState& exceptionState)
1439 { 1347 {
1440 if (!document || !document->view() || !document->page() || document != conte xtDocument()) { 1348 ASSERT(document);
1349 if (!document->view() || !document->page() || document != contextDocument()) {
1441 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid."); 1350 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1442 return nullptr; 1351 return nullptr;
1443 } 1352 }
1444 1353
1445 // Do any pending layout and compositing update (which may call touchEventTa rgetRectsChange) to ensure this 1354 // Do any pending layout and compositing update (which may call touchEventTa rgetRectsChange) to ensure this
1446 // really takes any previous changes into account. 1355 // really takes any previous changes into account.
1447 forceCompositingUpdate(document, exceptionState); 1356 forceCompositingUpdate(document, exceptionState);
1448 if (exceptionState.hadException()) 1357 if (exceptionState.hadException())
1449 return nullptr; 1358 return nullptr;
1450 1359
1451 if (RenderView* view = document->renderView()) { 1360 if (RenderView* view = document->renderView()) {
1452 if (RenderLayerCompositor* compositor = view->compositor()) { 1361 if (RenderLayerCompositor* compositor = view->compositor()) {
1453 if (GraphicsLayer* rootLayer = compositor->rootGraphicsLayer()) { 1362 if (GraphicsLayer* rootLayer = compositor->rootGraphicsLayer()) {
1454 RefPtrWillBeRawPtr<LayerRectList> rects = LayerRectList::create( ); 1363 RefPtrWillBeRawPtr<LayerRectList> rects = LayerRectList::create( );
1455 accumulateLayerRectList(compositor, rootLayer, rects.get()); 1364 accumulateLayerRectList(compositor, rootLayer, rects.get());
1456 return rects; 1365 return rects;
1457 } 1366 }
1458 } 1367 }
1459 } 1368 }
1460 1369
1461 return nullptr; 1370 return nullptr;
1462 } 1371 }
1463 1372
1464 PassRefPtrWillBeRawPtr<StaticNodeList> Internals::nodesFromRect(Document* docume nt, int centerX, int centerY, unsigned topPadding, unsigned rightPadding, 1373 PassRefPtrWillBeRawPtr<StaticNodeList> Internals::nodesFromRect(Document* docume nt, int centerX, int centerY, unsigned topPadding, unsigned rightPadding,
1465 unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allo wChildFrameContent, ExceptionState& exceptionState) const 1374 unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allo wChildFrameContent, ExceptionState& exceptionState) const
1466 { 1375 {
1467 if (!document || !document->frame() || !document->frame()->view()) { 1376 ASSERT(document);
1377 if (!document->frame() || !document->frame()->view()) {
1468 exceptionState.throwDOMException(InvalidAccessError, "No view can be obt ained from the provided document."); 1378 exceptionState.throwDOMException(InvalidAccessError, "No view can be obt ained from the provided document.");
1469 return nullptr; 1379 return nullptr;
1470 } 1380 }
1471 1381
1472 LocalFrame* frame = document->frame(); 1382 LocalFrame* frame = document->frame();
1473 FrameView* frameView = document->view(); 1383 FrameView* frameView = document->view();
1474 RenderView* renderView = document->renderView(); 1384 RenderView* renderView = document->renderView();
1475 1385
1476 if (!renderView) 1386 if (!renderView)
1477 return nullptr; 1387 return nullptr;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1516 void Internals::emitInspectorDidBeginFrame(int frameId) 1426 void Internals::emitInspectorDidBeginFrame(int frameId)
1517 { 1427 {
1518 contextDocument()->page()->inspectorController().didBeginFrame(frameId); 1428 contextDocument()->page()->inspectorController().didBeginFrame(frameId);
1519 } 1429 }
1520 1430
1521 void Internals::emitInspectorDidCancelFrame() 1431 void Internals::emitInspectorDidCancelFrame()
1522 { 1432 {
1523 contextDocument()->page()->inspectorController().didCancelFrame(); 1433 contextDocument()->page()->inspectorController().didCancelFrame();
1524 } 1434 }
1525 1435
1526 bool Internals::hasSpellingMarker(Document* document, int from, int length, Exce ptionState&) 1436 bool Internals::hasSpellingMarker(Document* document, int from, int length)
1527 { 1437 {
1528 if (!document || !document->frame()) 1438 ASSERT(document);
1439 if (!document->frame())
1529 return 0; 1440 return 0;
1530 1441
1531 return document->frame()->spellChecker().selectionStartHasMarkerFor(Document Marker::Spelling, from, length); 1442 return document->frame()->spellChecker().selectionStartHasMarkerFor(Document Marker::Spelling, from, length);
1532 } 1443 }
1533 1444
1534 void Internals::setContinuousSpellCheckingEnabled(bool enabled, ExceptionState&) 1445 void Internals::setContinuousSpellCheckingEnabled(bool enabled)
1535 { 1446 {
1536 if (!contextDocument() || !contextDocument()->frame()) 1447 if (!contextDocument() || !contextDocument()->frame())
1537 return; 1448 return;
1538 1449
1539 if (enabled != contextDocument()->frame()->spellChecker().isContinuousSpellC heckingEnabled()) 1450 if (enabled != contextDocument()->frame()->spellChecker().isContinuousSpellC heckingEnabled())
1540 contextDocument()->frame()->spellChecker().toggleContinuousSpellChecking (); 1451 contextDocument()->frame()->spellChecker().toggleContinuousSpellChecking ();
1541 } 1452 }
1542 1453
1543 bool Internals::isOverwriteModeEnabled(Document* document, ExceptionState&) 1454 bool Internals::isOverwriteModeEnabled(Document* document)
1544 { 1455 {
1545 if (!document || !document->frame()) 1456 ASSERT(document);
1457 if (!document->frame())
1546 return 0; 1458 return 0;
1547 1459
1548 return document->frame()->editor().isOverwriteModeEnabled(); 1460 return document->frame()->editor().isOverwriteModeEnabled();
1549 } 1461 }
1550 1462
1551 void Internals::toggleOverwriteModeEnabled(Document* document, ExceptionState&) 1463 void Internals::toggleOverwriteModeEnabled(Document* document)
1552 { 1464 {
1553 if (!document || !document->frame()) 1465 ASSERT(document);
1466 if (!document->frame())
1554 return; 1467 return;
1555 1468
1556 document->frame()->editor().toggleOverwriteModeEnabled(); 1469 document->frame()->editor().toggleOverwriteModeEnabled();
1557 } 1470 }
1558 1471
1559 unsigned Internals::numberOfLiveNodes() const 1472 unsigned Internals::numberOfLiveNodes() const
1560 { 1473 {
1561 return InspectorCounters::counterValue(InspectorCounters::NodeCounter); 1474 return InspectorCounters::counterValue(InspectorCounters::NodeCounter);
1562 } 1475 }
1563 1476
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1599 void Internals::setInspectorResourcesDataSizeLimits(int maximumResourcesContentS ize, int maximumSingleResourceContentSize, ExceptionState& exceptionState) 1512 void Internals::setInspectorResourcesDataSizeLimits(int maximumResourcesContentS ize, int maximumSingleResourceContentSize, ExceptionState& exceptionState)
1600 { 1513 {
1601 Page* page = contextDocument()->frame()->page(); 1514 Page* page = contextDocument()->frame()->page();
1602 if (!page) { 1515 if (!page) {
1603 exceptionState.throwDOMException(InvalidAccessError, "No page can be obt ained from the current context document."); 1516 exceptionState.throwDOMException(InvalidAccessError, "No page can be obt ained from the current context document.");
1604 return; 1517 return;
1605 } 1518 }
1606 page->inspectorController().setResourcesDataSizeLimitsFromInternals(maximumR esourcesContentSize, maximumSingleResourceContentSize); 1519 page->inspectorController().setResourcesDataSizeLimitsFromInternals(maximumR esourcesContentSize, maximumSingleResourceContentSize);
1607 } 1520 }
1608 1521
1609 bool Internals::hasGrammarMarker(Document* document, int from, int length, Excep tionState&) 1522 bool Internals::hasGrammarMarker(Document* document, int from, int length)
1610 { 1523 {
1611 if (!document || !document->frame()) 1524 ASSERT(document);
1525 if (!document->frame())
1612 return 0; 1526 return 0;
1613 1527
1614 return document->frame()->spellChecker().selectionStartHasMarkerFor(Document Marker::Grammar, from, length); 1528 return document->frame()->spellChecker().selectionStartHasMarkerFor(Document Marker::Grammar, from, length);
1615 } 1529 }
1616 1530
1617 unsigned Internals::numberOfScrollableAreas(Document* document, ExceptionState&) 1531 unsigned Internals::numberOfScrollableAreas(Document* document)
1618 { 1532 {
1619 if (!document || !document->frame()) 1533 ASSERT(document);
1534 if (!document->frame())
1620 return 0; 1535 return 0;
1621 1536
1622 unsigned count = 0; 1537 unsigned count = 0;
1623 LocalFrame* frame = document->frame(); 1538 LocalFrame* frame = document->frame();
1624 if (frame->view()->scrollableAreas()) 1539 if (frame->view()->scrollableAreas())
1625 count += frame->view()->scrollableAreas()->size(); 1540 count += frame->view()->scrollableAreas()->size();
1626 1541
1627 for (Frame* child = frame->tree().firstChild(); child; child = child->tree() .nextSibling()) { 1542 for (Frame* child = frame->tree().firstChild(); child; child = child->tree() .nextSibling()) {
1628 if (child->isLocalFrame() && toLocalFrame(child)->view() && toLocalFrame (child)->view()->scrollableAreas()) 1543 if (child->isLocalFrame() && toLocalFrame(child)->view() && toLocalFrame (child)->view()->scrollableAreas())
1629 count += toLocalFrame(child)->view()->scrollableAreas()->size(); 1544 count += toLocalFrame(child)->view()->scrollableAreas()->size();
1630 } 1545 }
1631 1546
1632 return count; 1547 return count;
1633 } 1548 }
1634 1549
1635 bool Internals::isPageBoxVisible(Document* document, int pageNumber, ExceptionSt ate& exceptionState) 1550 bool Internals::isPageBoxVisible(Document* document, int pageNumber)
1636 { 1551 {
1637 if (!document) { 1552 ASSERT(document);
1638 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
1639 return false;
1640 }
1641
1642 return document->isPageBoxVisible(pageNumber); 1553 return document->isPageBoxVisible(pageNumber);
1643 } 1554 }
1644 1555
1645 String Internals::layerTreeAsText(Document* document, ExceptionState& exceptionS tate) const 1556 String Internals::layerTreeAsText(Document* document, ExceptionState& exceptionS tate) const
1646 { 1557 {
1647 return layerTreeAsText(document, 0, exceptionState); 1558 return layerTreeAsText(document, 0, exceptionState);
1648 } 1559 }
1649 1560
1650 String Internals::elementLayerTreeAsText(Element* element, ExceptionState& excep tionState) const 1561 String Internals::elementLayerTreeAsText(Element* element, ExceptionState& excep tionState) const
1651 { 1562 {
1652 if (!element) { 1563 ASSERT(element);
1653 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
1654 return String();
1655 }
1656
1657 FrameView* frameView = element->document().view(); 1564 FrameView* frameView = element->document().view();
1658 frameView->updateLayoutAndStyleForPainting(); 1565 frameView->updateLayoutAndStyleForPainting();
1659 1566
1660 return elementLayerTreeAsText(element, 0, exceptionState); 1567 return elementLayerTreeAsText(element, 0, exceptionState);
1661 } 1568 }
1662 1569
1663 bool Internals::scrollsWithRespectTo(Element* element1, Element* element2, Excep tionState& exceptionState) 1570 bool Internals::scrollsWithRespectTo(Element* element1, Element* element2, Excep tionState& exceptionState)
1664 { 1571 {
1665 if (!element1 || !element2) { 1572 ASSERT(element1 && element2);
1666 exceptionState.throwDOMException(InvalidAccessError, String::format("The %s element provided is invalid.", element1 ? "second" : "first"));
1667 return 0;
1668 }
1669
1670 element1->document().view()->updateLayoutAndStyleForPainting(); 1573 element1->document().view()->updateLayoutAndStyleForPainting();
1671 1574
1672 RenderObject* renderer1 = element1->renderer(); 1575 RenderObject* renderer1 = element1->renderer();
1673 RenderObject* renderer2 = element2->renderer(); 1576 RenderObject* renderer2 = element2->renderer();
1674 if (!renderer1 || !renderer1->isBox()) { 1577 if (!renderer1 || !renderer1->isBox()) {
1675 exceptionState.throwDOMException(InvalidAccessError, renderer1 ? "The fi rst provided element's renderer is not a box." : "The first provided element has no renderer."); 1578 exceptionState.throwDOMException(InvalidAccessError, renderer1 ? "The fi rst provided element's renderer is not a box." : "The first provided element has no renderer.");
1676 return 0; 1579 return 0;
1677 } 1580 }
1678 if (!renderer2 || !renderer2->isBox()) { 1581 if (!renderer2 || !renderer2->isBox()) {
1679 exceptionState.throwDOMException(InvalidAccessError, renderer2 ? "The se cond provided element's renderer is not a box." : "The second provided element h as no renderer."); 1582 exceptionState.throwDOMException(InvalidAccessError, renderer2 ? "The se cond provided element's renderer is not a box." : "The second provided element h as no renderer.");
1680 return 0; 1583 return 0;
1681 } 1584 }
1682 1585
1683 RenderLayer* layer1 = toRenderBox(renderer1)->layer(); 1586 RenderLayer* layer1 = toRenderBox(renderer1)->layer();
1684 RenderLayer* layer2 = toRenderBox(renderer2)->layer(); 1587 RenderLayer* layer2 = toRenderBox(renderer2)->layer();
1685 if (!layer1 || !layer2) { 1588 if (!layer1 || !layer2) {
1686 exceptionState.throwDOMException(InvalidAccessError, String::format("No render layer can be obtained from the %s provided element.", layer1 ? "second" : "first")); 1589 exceptionState.throwDOMException(InvalidAccessError, String::format("No render layer can be obtained from the %s provided element.", layer1 ? "second" : "first"));
1687 return 0; 1590 return 0;
1688 } 1591 }
1689 1592
1690 return layer1->scrollsWithRespectTo(layer2); 1593 return layer1->scrollsWithRespectTo(layer2);
1691 } 1594 }
1692 1595
1693 bool Internals::isUnclippedDescendant(Element* element, ExceptionState& exceptio nState) 1596 bool Internals::isUnclippedDescendant(Element* element, ExceptionState& exceptio nState)
1694 { 1597 {
1695 if (!element) { 1598 ASSERT(element);
1696 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
1697 return 0;
1698 }
1699
1700 element->document().view()->updateLayoutAndStyleForPainting(); 1599 element->document().view()->updateLayoutAndStyleForPainting();
1701 1600
1702 RenderObject* renderer = element->renderer(); 1601 RenderObject* renderer = element->renderer();
1703 if (!renderer || !renderer->isBox()) { 1602 if (!renderer || !renderer->isBox()) {
1704 exceptionState.throwDOMException(InvalidAccessError, renderer ? "The pro vided element's renderer is not a box." : "The provided element has no renderer. "); 1603 exceptionState.throwDOMException(InvalidAccessError, renderer ? "The pro vided element's renderer is not a box." : "The provided element has no renderer. ");
1705 return 0; 1604 return 0;
1706 } 1605 }
1707 1606
1708 RenderLayer* layer = toRenderBox(renderer)->layer(); 1607 RenderLayer* layer = toRenderBox(renderer)->layer();
1709 if (!layer) { 1608 if (!layer) {
1710 exceptionState.throwDOMException(InvalidAccessError, "No render layer ca n be obtained from the provided element."); 1609 exceptionState.throwDOMException(InvalidAccessError, "No render layer ca n be obtained from the provided element.");
1711 return 0; 1610 return 0;
1712 } 1611 }
1713 1612
1714 // We used to compute isUnclippedDescendant only when acceleratedCompositing ForOverflowScrollEnabled, 1613 // We used to compute isUnclippedDescendant only when acceleratedCompositing ForOverflowScrollEnabled,
1715 // but now we compute it all the time. 1614 // but now we compute it all the time.
1716 // FIXME: Remove this if statement and rebaseline the tests that make this a ssumption. 1615 // FIXME: Remove this if statement and rebaseline the tests that make this a ssumption.
1717 if (!layer->compositor()->acceleratedCompositingForOverflowScrollEnabled()) 1616 if (!layer->compositor()->acceleratedCompositingForOverflowScrollEnabled())
1718 return false; 1617 return false;
1719 1618
1720 return layer->isUnclippedDescendant(); 1619 return layer->isUnclippedDescendant();
1721 } 1620 }
1722 1621
1723 String Internals::layerTreeAsText(Document* document, unsigned flags, ExceptionS tate& exceptionState) const 1622 String Internals::layerTreeAsText(Document* document, unsigned flags, ExceptionS tate& exceptionState) const
1724 { 1623 {
1725 if (!document || !document->frame()) { 1624 ASSERT(document);
1726 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1625 if (!document->frame()) {
1626 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1727 return String(); 1627 return String();
1728 } 1628 }
1729 1629
1730 document->view()->updateLayoutAndStyleForPainting(); 1630 document->view()->updateLayoutAndStyleForPainting();
1731 1631
1732 return document->frame()->layerTreeAsText(flags); 1632 return document->frame()->layerTreeAsText(flags);
1733 } 1633 }
1734 1634
1735 String Internals::elementLayerTreeAsText(Element* element, unsigned flags, Excep tionState& exceptionState) const 1635 String Internals::elementLayerTreeAsText(Element* element, unsigned flags, Excep tionState& exceptionState) const
1736 { 1636 {
1737 if (!element) { 1637 ASSERT(element);
1738 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
1739 return String();
1740 }
1741
1742 element->document().updateLayout(); 1638 element->document().updateLayout();
1743 1639
1744 RenderObject* renderer = element->renderer(); 1640 RenderObject* renderer = element->renderer();
1745 if (!renderer || !renderer->isBox()) { 1641 if (!renderer || !renderer->isBox()) {
1746 exceptionState.throwDOMException(InvalidAccessError, renderer ? "The pro vided element's renderer is not a box." : "The provided element has no renderer. "); 1642 exceptionState.throwDOMException(InvalidAccessError, renderer ? "The pro vided element's renderer is not a box." : "The provided element has no renderer. ");
1747 return String(); 1643 return String();
1748 } 1644 }
1749 1645
1750 RenderLayer* layer = toRenderBox(renderer)->layer(); 1646 RenderLayer* layer = toRenderBox(renderer)->layer();
1751 if (!layer 1647 if (!layer
1752 || !layer->hasCompositedLayerMapping() 1648 || !layer->hasCompositedLayerMapping()
1753 || !layer->compositedLayerMapping()->mainGraphicsLayer()) { 1649 || !layer->compositedLayerMapping()->mainGraphicsLayer()) {
1754 // Don't raise exception in these cases which may be normally used in te sts. 1650 // Don't raise exception in these cases which may be normally used in te sts.
1755 return String(); 1651 return String();
1756 } 1652 }
1757 1653
1758 return layer->compositedLayerMapping()->mainGraphicsLayer()->layerTreeAsText (flags); 1654 return layer->compositedLayerMapping()->mainGraphicsLayer()->layerTreeAsText (flags);
1759 } 1655 }
1760 1656
1761 String Internals::scrollingStateTreeAsText(Document* document, ExceptionState& e xceptionState) const 1657 String Internals::scrollingStateTreeAsText(Document*) const
1762 { 1658 {
1763 return String(); 1659 return String();
1764 } 1660 }
1765 1661
1766 String Internals::mainThreadScrollingReasons(Document* document, ExceptionState& exceptionState) const 1662 String Internals::mainThreadScrollingReasons(Document* document, ExceptionState& exceptionState) const
1767 { 1663 {
1768 if (!document || !document->frame()) { 1664 ASSERT(document);
1769 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1665 if (!document->frame()) {
1666 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1770 return String(); 1667 return String();
1771 } 1668 }
1772 1669
1773 document->frame()->view()->updateLayoutAndStyleForPainting(); 1670 document->frame()->view()->updateLayoutAndStyleForPainting();
1774 1671
1775 Page* page = document->page(); 1672 Page* page = document->page();
1776 if (!page) 1673 if (!page)
1777 return String(); 1674 return String();
1778 1675
1779 return page->mainThreadScrollingReasonsAsText(); 1676 return page->mainThreadScrollingReasonsAsText();
1780 } 1677 }
1781 1678
1782 PassRefPtrWillBeRawPtr<ClientRectList> Internals::nonFastScrollableRects(Documen t* document, ExceptionState& exceptionState) const 1679 PassRefPtrWillBeRawPtr<ClientRectList> Internals::nonFastScrollableRects(Documen t* document, ExceptionState& exceptionState) const
1783 { 1680 {
1784 if (!document || !document->frame()) { 1681 ASSERT(document);
1785 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1682 if (!document->frame()) {
1683 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1786 return nullptr; 1684 return nullptr;
1787 } 1685 }
1788 1686
1789 Page* page = document->page(); 1687 Page* page = document->page();
1790 if (!page) 1688 if (!page)
1791 return nullptr; 1689 return nullptr;
1792 1690
1793 return page->nonFastScrollableRects(document->frame()); 1691 return page->nonFastScrollableRects(document->frame());
1794 } 1692 }
1795 1693
1796 void Internals::garbageCollectDocumentResources(Document* document, ExceptionSta te& exceptionState) const 1694 void Internals::garbageCollectDocumentResources(Document* document) const
1797 { 1695 {
1798 if (!document) { 1696 ASSERT(document);
1799 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
1800 return;
1801 }
1802 ResourceFetcher* fetcher = document->fetcher(); 1697 ResourceFetcher* fetcher = document->fetcher();
1803 if (!fetcher) 1698 if (!fetcher)
1804 return; 1699 return;
1805 fetcher->garbageCollectDocumentResources(); 1700 fetcher->garbageCollectDocumentResources();
1806 } 1701 }
1807 1702
1808 void Internals::evictAllResources() const 1703 void Internals::evictAllResources() const
1809 { 1704 {
1810 memoryCache()->evictResources(); 1705 memoryCache()->evictResources();
1811 } 1706 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1882 if (!document || !document->page()) { 1777 if (!document || !document->page()) {
1883 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's page cannot be retrieved." : "No context document can be obtained."); 1778 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's page cannot be retrieved." : "No context document can be obtained.");
1884 return; 1779 return;
1885 } 1780 }
1886 Page* page = document->page(); 1781 Page* page = document->page();
1887 page->setDeviceScaleFactor(scaleFactor); 1782 page->setDeviceScaleFactor(scaleFactor);
1888 } 1783 }
1889 1784
1890 void Internals::setIsCursorVisible(Document* document, bool isVisible, Exception State& exceptionState) 1785 void Internals::setIsCursorVisible(Document* document, bool isVisible, Exception State& exceptionState)
1891 { 1786 {
1892 if (!document || !document->page()) { 1787 ASSERT(document);
1893 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's page cannot be retrieved." : "No context document can be obtained."); 1788 if (!document->page()) {
1789 exceptionState.throwDOMException(InvalidAccessError, "No context documen t can be obtained.");
1894 return; 1790 return;
1895 } 1791 }
1896 document->page()->setIsCursorVisible(isVisible); 1792 document->page()->setIsCursorVisible(isVisible);
1897 } 1793 }
1898 1794
1899 void Internals::mediaPlayerRequestFullscreen(HTMLMediaElement* mediaElement) 1795 void Internals::mediaPlayerRequestFullscreen(HTMLMediaElement* mediaElement)
1900 { 1796 {
1901 mediaElement->mediaPlayerRequestFullscreen(); 1797 mediaElement->mediaPlayerRequestFullscreen();
1902 } 1798 }
1903 1799
(...skipping 17 matching lines...) Expand all
1921 return PrivateScriptTest::create(frame()); 1817 return PrivateScriptTest::create(frame());
1922 } 1818 }
1923 1819
1924 Vector<String> Internals::getReferencedFilePaths() const 1820 Vector<String> Internals::getReferencedFilePaths() const
1925 { 1821 {
1926 return frame()->loader().currentItem()->getReferencedFilePaths(); 1822 return frame()->loader().currentItem()->getReferencedFilePaths();
1927 } 1823 }
1928 1824
1929 void Internals::startTrackingRepaints(Document* document, ExceptionState& except ionState) 1825 void Internals::startTrackingRepaints(Document* document, ExceptionState& except ionState)
1930 { 1826 {
1931 if (!document || !document->view()) { 1827 ASSERT(document);
1932 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's view cannot be retrieved." : "The document provided is invalid."); 1828 if (!document->view()) {
1829 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1933 return; 1830 return;
1934 } 1831 }
1935 1832
1936 FrameView* frameView = document->view(); 1833 FrameView* frameView = document->view();
1937 frameView->updateLayoutAndStyleForPainting(); 1834 frameView->updateLayoutAndStyleForPainting();
1938 frameView->setTracksPaintInvalidations(true); 1835 frameView->setTracksPaintInvalidations(true);
1939 } 1836 }
1940 1837
1941 void Internals::stopTrackingRepaints(Document* document, ExceptionState& excepti onState) 1838 void Internals::stopTrackingRepaints(Document* document, ExceptionState& excepti onState)
1942 { 1839 {
1943 if (!document || !document->view()) { 1840 ASSERT(document);
1944 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's view cannot be retrieved." : "The document provided is invalid."); 1841 if (!document->view()) {
1842 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1945 return; 1843 return;
1946 } 1844 }
1947 1845
1948 FrameView* frameView = document->view(); 1846 FrameView* frameView = document->view();
1949 frameView->updateLayoutAndStyleForPainting(); 1847 frameView->updateLayoutAndStyleForPainting();
1950 frameView->setTracksPaintInvalidations(false); 1848 frameView->setTracksPaintInvalidations(false);
1951 } 1849 }
1952 1850
1953 void Internals::updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(Except ionState& exceptionState) 1851 void Internals::updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(Except ionState& exceptionState)
1954 { 1852 {
(...skipping 11 matching lines...) Expand all
1966 document = toHTMLIFrameElement(*node).contentDocument(); 1864 document = toHTMLIFrameElement(*node).contentDocument();
1967 } else { 1865 } else {
1968 exceptionState.throwTypeError("The node provided is neither a document n or an IFrame."); 1866 exceptionState.throwTypeError("The node provided is neither a document n or an IFrame.");
1969 return; 1867 return;
1970 } 1868 }
1971 document->updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasksS ynchronously); 1869 document->updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasksS ynchronously);
1972 } 1870 }
1973 1871
1974 void Internals::forceFullRepaint(Document* document, ExceptionState& exceptionSt ate) 1872 void Internals::forceFullRepaint(Document* document, ExceptionState& exceptionSt ate)
1975 { 1873 {
1976 if (!document || !document->view()) { 1874 ASSERT(document);
1977 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's view cannot be retrieved." : "The document provided is invalid."); 1875 if (!document->view()) {
1876 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1978 return; 1877 return;
1979 } 1878 }
1980 1879
1981 if (RenderView *renderView = document->renderView()) 1880 if (RenderView *renderView = document->renderView())
1982 renderView->invalidatePaintForViewAndCompositedLayers(); 1881 renderView->invalidatePaintForViewAndCompositedLayers();
1983 } 1882 }
1984 1883
1985 PassRefPtrWillBeRawPtr<ClientRectList> Internals::draggableRegions(Document* doc ument, ExceptionState& exceptionState) 1884 PassRefPtrWillBeRawPtr<ClientRectList> Internals::draggableRegions(Document* doc ument, ExceptionState& exceptionState)
1986 { 1885 {
1987 return annotatedRegions(document, true, exceptionState); 1886 return annotatedRegions(document, true, exceptionState);
1988 } 1887 }
1989 1888
1990 PassRefPtrWillBeRawPtr<ClientRectList> Internals::nonDraggableRegions(Document* document, ExceptionState& exceptionState) 1889 PassRefPtrWillBeRawPtr<ClientRectList> Internals::nonDraggableRegions(Document* document, ExceptionState& exceptionState)
1991 { 1890 {
1992 return annotatedRegions(document, false, exceptionState); 1891 return annotatedRegions(document, false, exceptionState);
1993 } 1892 }
1994 1893
1995 PassRefPtrWillBeRawPtr<ClientRectList> Internals::annotatedRegions(Document* doc ument, bool draggable, ExceptionState& exceptionState) 1894 PassRefPtrWillBeRawPtr<ClientRectList> Internals::annotatedRegions(Document* doc ument, bool draggable, ExceptionState& exceptionState)
1996 { 1895 {
1997 if (!document || !document->view()) { 1896 ASSERT(document);
1998 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's view cannot be retrieved." : "The document provided is invalid."); 1897 if (!document->view()) {
1898 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
1999 return ClientRectList::create(); 1899 return ClientRectList::create();
2000 } 1900 }
2001 1901
2002 document->updateLayout(); 1902 document->updateLayout();
2003 document->view()->updateAnnotatedRegions(); 1903 document->view()->updateAnnotatedRegions();
2004 Vector<AnnotatedRegionValue> regions = document->annotatedRegions(); 1904 Vector<AnnotatedRegionValue> regions = document->annotatedRegions();
2005 1905
2006 Vector<FloatQuad> quads; 1906 Vector<FloatQuad> quads;
2007 for (size_t i = 0; i < regions.size(); ++i) { 1907 for (size_t i = 0; i < regions.size(); ++i) {
2008 if (regions[i].draggable == draggable) 1908 if (regions[i].draggable == draggable)
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2059 case Cursor::Grabbing: return "Grabbing"; 1959 case Cursor::Grabbing: return "Grabbing";
2060 case Cursor::Custom: return "Custom"; 1960 case Cursor::Custom: return "Custom";
2061 } 1961 }
2062 1962
2063 ASSERT_NOT_REACHED(); 1963 ASSERT_NOT_REACHED();
2064 return "UNKNOWN"; 1964 return "UNKNOWN";
2065 } 1965 }
2066 1966
2067 String Internals::getCurrentCursorInfo(Document* document, ExceptionState& excep tionState) 1967 String Internals::getCurrentCursorInfo(Document* document, ExceptionState& excep tionState)
2068 { 1968 {
2069 if (!document || !document->frame()) { 1969 ASSERT(document);
2070 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "The document provided is invalid."); 1970 if (!document->frame()) {
1971 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
2071 return String(); 1972 return String();
2072 } 1973 }
2073 1974
2074 Cursor cursor = document->frame()->eventHandler().currentMouseCursor(); 1975 Cursor cursor = document->frame()->eventHandler().currentMouseCursor();
2075 1976
2076 StringBuilder result; 1977 StringBuilder result;
2077 result.append("type="); 1978 result.append("type=");
2078 result.append(cursorTypeToString(cursor.type())); 1979 result.append(cursorTypeToString(cursor.type()));
2079 result.append(" hotSpot="); 1980 result.append(" hotSpot=");
2080 result.appendNumber(cursor.hotSpot().x()); 1981 result.appendNumber(cursor.hotSpot().x());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2119 { 2020 {
2120 Document* document = contextDocument(); 2021 Document* document = contextDocument();
2121 if (!document || !document->frame()) { 2022 if (!document || !document->frame()) {
2122 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "No context document can be obtained."); 2023 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's frame cannot be retrieved." : "No context document can be obtained.");
2123 return nullptr; 2024 return nullptr;
2124 } 2025 }
2125 2026
2126 return ClientRect::create(document->frame()->selection().bounds()); 2027 return ClientRect::create(document->frame()->selection().bounds());
2127 } 2028 }
2128 2029
2129 String Internals::markerTextForListItem(Element* element, ExceptionState& except ionState) 2030 String Internals::markerTextForListItem(Element* element)
2130 { 2031 {
2131 if (!element) { 2032 ASSERT(element);
2132 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
2133 return String();
2134 }
2135 return blink::markerTextForListItem(element); 2033 return blink::markerTextForListItem(element);
2136 } 2034 }
2137 2035
2138 String Internals::getImageSourceURL(Element* element, ExceptionState& exceptionS tate) 2036 String Internals::getImageSourceURL(Element* element)
2139 { 2037 {
2140 if (!element) { 2038 ASSERT(element);
2141 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element"));
2142 return String();
2143 }
2144 return element->imageSourceURL(); 2039 return element->imageSourceURL();
2145 } 2040 }
2146 2041
2147 String Internals::baseURL(Document* document, ExceptionState& exceptionState) 2042 String Internals::baseURL(Document* document)
2148 { 2043 {
2149 if (!document) { 2044 ASSERT(document);
2150 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
2151 return String();
2152 }
2153
2154 return document->baseURL().string(); 2045 return document->baseURL().string();
2155 } 2046 }
2156 2047
2157 bool Internals::isSelectPopupVisible(Node* node) 2048 bool Internals::isSelectPopupVisible(Node* node)
2158 { 2049 {
2159 ASSERT(node); 2050 ASSERT(node);
2160 if (!isHTMLSelectElement(*node)) 2051 if (!isHTMLSelectElement(*node))
2161 return false; 2052 return false;
2162 2053
2163 HTMLSelectElement& select = toHTMLSelectElement(*node); 2054 HTMLSelectElement& select = toHTMLSelectElement(*node);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2211 sharedContext->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_EXT, GL_INNOCENT_ CONTEXT_RESET_EXT); 2102 sharedContext->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_EXT, GL_INNOCENT_ CONTEXT_RESET_EXT);
2212 // To prevent tests that call loseSharedGraphicsContext3D from being 2103 // To prevent tests that call loseSharedGraphicsContext3D from being
2213 // flaky, we call finish so that the context is guaranteed to be lost 2104 // flaky, we call finish so that the context is guaranteed to be lost
2214 // synchronously (i.e. before returning). 2105 // synchronously (i.e. before returning).
2215 sharedContext->finish(); 2106 sharedContext->finish();
2216 return true; 2107 return true;
2217 } 2108 }
2218 2109
2219 void Internals::forceCompositingUpdate(Document* document, ExceptionState& excep tionState) 2110 void Internals::forceCompositingUpdate(Document* document, ExceptionState& excep tionState)
2220 { 2111 {
2221 if (!document || !document->renderView()) { 2112 ASSERT(document);
2222 exceptionState.throwDOMException(InvalidAccessError, document ? "The doc ument's render view cannot be retrieved." : "The document provided is invalid.") ; 2113 if (!document->renderView()) {
2114 exceptionState.throwDOMException(InvalidAccessError, "The document provi ded is invalid.");
2223 return; 2115 return;
2224 } 2116 }
2225 2117
2226 document->frame()->view()->updateLayoutAndStyleForPainting(); 2118 document->frame()->view()->updateLayoutAndStyleForPainting();
2227 } 2119 }
2228 2120
2229 void Internals::setZoomFactor(float factor) 2121 void Internals::setZoomFactor(float factor)
2230 { 2122 {
2231 frame()->setPageZoomFactor(factor); 2123 frame()->setPageZoomFactor(factor);
2232 } 2124 }
2233 2125
2234 void Internals::setShouldRevealPassword(Element* element, bool reveal, Exception State& exceptionState) 2126 void Internals::setShouldRevealPassword(Element* element, bool reveal, Exception State& exceptionState)
2235 { 2127 {
2128 ASSERT(element);
2236 if (!isHTMLInputElement(element)) { 2129 if (!isHTMLInputElement(element)) {
2237 exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages:: argumentNullOrIncorrectType(1, "Element")); 2130 exceptionState.throwDOMException(InvalidNodeTypeError, "The element prov ided is not an INPUT.");
2238 return; 2131 return;
2239 } 2132 }
2240 2133
2241 return toHTMLInputElement(*element).setShouldRevealPassword(reveal); 2134 return toHTMLInputElement(*element).setShouldRevealPassword(reveal);
2242 } 2135 }
2243 2136
2244 namespace { 2137 namespace {
2245 2138
2246 class AddOneFunction : public ScriptFunction { 2139 class AddOneFunction : public ScriptFunction {
2247 public: 2140 public:
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2307 blink::WebPoint point(x, y); 2200 blink::WebPoint point(x, y);
2308 SurroundingText surroundingText(VisiblePosition(node->renderer()->positionFo rPoint(static_cast<IntPoint>(point))).deepEquivalent().parentAnchoredEquivalent( ), maxLength); 2201 SurroundingText surroundingText(VisiblePosition(node->renderer()->positionFo rPoint(static_cast<IntPoint>(point))).deepEquivalent().parentAnchoredEquivalent( ), maxLength);
2309 return surroundingText.content(); 2202 return surroundingText.content();
2310 } 2203 }
2311 2204
2312 void Internals::setFocused(bool focused) 2205 void Internals::setFocused(bool focused)
2313 { 2206 {
2314 frame()->page()->focusController().setFocused(focused); 2207 frame()->page()->focusController().setFocused(focused);
2315 } 2208 }
2316 2209
2317 bool Internals::ignoreLayoutWithPendingStylesheets(Document* document, Exception State& exceptionState) 2210 bool Internals::ignoreLayoutWithPendingStylesheets(Document* document)
2318 { 2211 {
2319 if (!document) { 2212 ASSERT(document);
2320 exceptionState.throwDOMException(InvalidAccessError, "No context documen t is available.");
2321 return false;
2322 }
2323
2324 return document->ignoreLayoutWithPendingStylesheets(); 2213 return document->ignoreLayoutWithPendingStylesheets();
2325 } 2214 }
2326 2215
2327 void Internals::setNetworkStateNotifierTestOnly(bool testOnly) 2216 void Internals::setNetworkStateNotifierTestOnly(bool testOnly)
2328 { 2217 {
2329 networkStateNotifier().setTestUpdatesOnly(testOnly); 2218 networkStateNotifier().setTestUpdatesOnly(testOnly);
2330 } 2219 }
2331 2220
2332 void Internals::setNetworkConnectionInfo(const String& type, ExceptionState& exc eptionState) 2221 void Internals::setNetworkConnectionInfo(const String& type, ExceptionState& exc eptionState)
2333 { 2222 {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2365 2254
2366 StringBuilder markup; 2255 StringBuilder markup;
2367 Vector<Document::TransitionElementData>::iterator iter = elementData.begin() ; 2256 Vector<Document::TransitionElementData>::iterator iter = elementData.begin() ;
2368 for (; iter != elementData.end(); ++iter) 2257 for (; iter != elementData.end(); ++iter)
2369 markup.append(iter->markup); 2258 markup.append(iter->markup);
2370 2259
2371 return markup.toString(); 2260 return markup.toString();
2372 } 2261 }
2373 2262
2374 } // namespace blink 2263 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/testing/Internals.h ('k') | Source/core/testing/Internals.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698