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

Side by Side Diff: Source/core/dom/Document.cpp

Issue 1176013002: Move attributes and methods from HTMLDocument to Document (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
(...skipping 2271 matching lines...) Expand 10 before | Expand all | Expand 10 after
2282 return parser() ? parser()->asScriptableDocumentParser() : 0; 2282 return parser() ? parser()->asScriptableDocumentParser() : 0;
2283 } 2283 }
2284 2284
2285 void Document::open(Document* ownerDocument, ExceptionState& exceptionState) 2285 void Document::open(Document* ownerDocument, ExceptionState& exceptionState)
2286 { 2286 {
2287 if (importLoader()) { 2287 if (importLoader()) {
2288 exceptionState.throwDOMException(InvalidStateError, "Imported document d oesn't support open()."); 2288 exceptionState.throwDOMException(InvalidStateError, "Imported document d oesn't support open().");
2289 return; 2289 return;
2290 } 2290 }
2291 2291
2292 if (!isHTMLDocument()) {
2293 exceptionState.throwDOMException(InvalidStateError, "Only HTML documents support open().");
2294 return;
2295 }
2296
2292 if (ownerDocument) { 2297 if (ownerDocument) {
2293 setURL(ownerDocument->url()); 2298 setURL(ownerDocument->url());
2294 m_cookieURL = ownerDocument->cookieURL(); 2299 m_cookieURL = ownerDocument->cookieURL();
2295 setSecurityOrigin(ownerDocument->securityOrigin()); 2300 setSecurityOrigin(ownerDocument->securityOrigin());
2296 } 2301 }
2297 2302
2303 open();
2304 }
2305
2306 void Document::open()
2307 {
2308 ASSERT(!importLoader());
2309
2298 if (m_frame) { 2310 if (m_frame) {
2299 if (ScriptableDocumentParser* parser = scriptableDocumentParser()) { 2311 if (ScriptableDocumentParser* parser = scriptableDocumentParser()) {
2300 if (parser->isParsing()) { 2312 if (parser->isParsing()) {
2301 // FIXME: HTML5 doesn't tell us to check this, it might not be c orrect. 2313 // FIXME: HTML5 doesn't tell us to check this, it might not be c orrect.
2302 if (parser->isExecutingScript()) 2314 if (parser->isExecutingScript())
2303 return; 2315 return;
2304 2316
2305 if (!parser->wasCreatedByScript() && parser->hasInsertionPoint() ) 2317 if (!parser->wasCreatedByScript() && parser->hasInsertionPoint() )
2306 return; 2318 return;
2307 } 2319 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
2448 void Document::close(ExceptionState& exceptionState) 2460 void Document::close(ExceptionState& exceptionState)
2449 { 2461 {
2450 // FIXME: We should follow the specification more closely: 2462 // FIXME: We should follow the specification more closely:
2451 // http://www.whatwg.org/specs/web-apps/current-work/#dom-document-cl ose 2463 // http://www.whatwg.org/specs/web-apps/current-work/#dom-document-cl ose
2452 2464
2453 if (importLoader()) { 2465 if (importLoader()) {
2454 exceptionState.throwDOMException(InvalidStateError, "Imported document d oesn't support close()."); 2466 exceptionState.throwDOMException(InvalidStateError, "Imported document d oesn't support close().");
2455 return; 2467 return;
2456 } 2468 }
2457 2469
2470 if (!isHTMLDocument()) {
2471 exceptionState.throwDOMException(InvalidStateError, "Only HTML documents support close().");
2472 return;
2473 }
2474
2475 close();
2476 }
2477
2478 void Document::close()
2479 {
2458 if (!scriptableDocumentParser() || !scriptableDocumentParser()->wasCreatedBy Script() || !scriptableDocumentParser()->isParsing()) 2480 if (!scriptableDocumentParser() || !scriptableDocumentParser()->wasCreatedBy Script() || !scriptableDocumentParser()->isParsing())
2459 return; 2481 return;
2460 2482
2461 explicitClose(); 2483 explicitClose();
2462 } 2484 }
2463 2485
2464 void Document::explicitClose() 2486 void Document::explicitClose()
2465 { 2487 {
2466 if (RefPtrWillBeRawPtr<DocumentParser> parser = m_parser) 2488 if (RefPtrWillBeRawPtr<DocumentParser> parser = m_parser)
2467 parser->finish(); 2489 parser->finish();
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
2694 return static_cast<int>((currentTime() - m_startTime) * 1000); 2716 return static_cast<int>((currentTime() - m_startTime) * 1000);
2695 } 2717 }
2696 2718
2697 void Document::write(const SegmentedString& text, Document* ownerDocument, Excep tionState& exceptionState) 2719 void Document::write(const SegmentedString& text, Document* ownerDocument, Excep tionState& exceptionState)
2698 { 2720 {
2699 if (importLoader()) { 2721 if (importLoader()) {
2700 exceptionState.throwDOMException(InvalidStateError, "Imported document d oesn't support write()."); 2722 exceptionState.throwDOMException(InvalidStateError, "Imported document d oesn't support write().");
2701 return; 2723 return;
2702 } 2724 }
2703 2725
2726 if (!isHTMLDocument()) {
2727 exceptionState.throwDOMException(InvalidStateError, "Only HTML documents support write().");
2728 return;
2729 }
2730
2704 NestingLevelIncrementer nestingLevelIncrementer(m_writeRecursionDepth); 2731 NestingLevelIncrementer nestingLevelIncrementer(m_writeRecursionDepth);
2705 2732
2706 m_writeRecursionIsTooDeep = (m_writeRecursionDepth > 1) && m_writeRecursionI sTooDeep; 2733 m_writeRecursionIsTooDeep = (m_writeRecursionDepth > 1) && m_writeRecursionI sTooDeep;
2707 m_writeRecursionIsTooDeep = (m_writeRecursionDepth > cMaxWriteRecursionDepth ) || m_writeRecursionIsTooDeep; 2734 m_writeRecursionIsTooDeep = (m_writeRecursionDepth > cMaxWriteRecursionDepth ) || m_writeRecursionIsTooDeep;
2708 2735
2709 if (m_writeRecursionIsTooDeep) 2736 if (m_writeRecursionIsTooDeep)
2710 return; 2737 return;
2711 2738
2712 bool hasInsertionPoint = m_parser && m_parser->hasInsertionPoint(); 2739 bool hasInsertionPoint = m_parser && m_parser->hasInsertionPoint();
2713 2740
2714 if (!hasInsertionPoint && m_ignoreDestructiveWriteCount) { 2741 if (!hasInsertionPoint && m_ignoreDestructiveWriteCount) {
2715 addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessage Level, ExceptionMessages::failedToExecute("write", "Document", "It isn't possibl e to write into a document from an asynchronously-loaded external script unless it is explicitly opened."))); 2742 addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessage Level, ExceptionMessages::failedToExecute("write", "Document", "It isn't possibl e to write into a document from an asynchronously-loaded external script unless it is explicitly opened.")));
2716 return; 2743 return;
2717 } 2744 }
2718 2745
2719 if (!hasInsertionPoint) 2746 if (!hasInsertionPoint)
2720 open(ownerDocument); 2747 open(ownerDocument, ASSERT_NO_EXCEPTION);
2721 2748
2722 ASSERT(m_parser); 2749 ASSERT(m_parser);
2723 m_parser->insert(text); 2750 m_parser->insert(text);
2724 } 2751 }
2725 2752
2726 void Document::write(const String& text, Document* ownerDocument, ExceptionState & exceptionState) 2753 void Document::write(const String& text, Document* ownerDocument, ExceptionState & exceptionState)
2727 { 2754 {
2728 write(SegmentedString(text), ownerDocument, exceptionState); 2755 write(SegmentedString(text), ownerDocument, exceptionState);
2729 } 2756 }
2730 2757
2731 void Document::writeln(const String& text, Document* ownerDocument, ExceptionSta te& exceptionState) 2758 void Document::writeln(const String& text, Document* ownerDocument, ExceptionSta te& exceptionState)
2732 { 2759 {
2733 write(text, ownerDocument, exceptionState); 2760 write(text, ownerDocument, exceptionState);
2734 if (exceptionState.hadException()) 2761 if (exceptionState.hadException())
2735 return; 2762 return;
2736 write("\n", ownerDocument); 2763 write("\n", ownerDocument);
2737 } 2764 }
2738 2765
2766 void Document::write(LocalDOMWindow* callingWindow, const Vector<String>& text, ExceptionState& exceptionState)
2767 {
2768 ASSERT(callingWindow);
2769 StringBuilder builder;
2770 for (const String& string : text)
2771 builder.append(string);
2772 write(builder.toString(), callingWindow->document(), exceptionState);
2773 }
2774
2775 void Document::writeln(LocalDOMWindow* callingWindow, const Vector<String>& text , ExceptionState& exceptionState)
2776 {
2777 ASSERT(callingWindow);
2778 StringBuilder builder;
2779 for (const String& string : text)
2780 builder.append(string);
2781 writeln(builder.toString(), callingWindow->document(), exceptionState);
2782 }
2783
2739 const KURL& Document::virtualURL() const 2784 const KURL& Document::virtualURL() const
2740 { 2785 {
2741 return m_url; 2786 return m_url;
2742 } 2787 }
2743 2788
2744 KURL Document::virtualCompleteURL(const String& url) const 2789 KURL Document::virtualCompleteURL(const String& url) const
2745 { 2790 {
2746 return completeURL(url); 2791 return completeURL(url);
2747 } 2792 }
2748 2793
(...skipping 2990 matching lines...) Expand 10 before | Expand all | Expand 10 after
5739 #ifndef NDEBUG 5784 #ifndef NDEBUG
5740 using namespace blink; 5785 using namespace blink;
5741 void showLiveDocumentInstances() 5786 void showLiveDocumentInstances()
5742 { 5787 {
5743 WeakDocumentSet& set = liveDocumentSet(); 5788 WeakDocumentSet& set = liveDocumentSet();
5744 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 5789 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
5745 for (Document* document : set) 5790 for (Document* document : set)
5746 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str ing().utf8().data()); 5791 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str ing().utf8().data());
5747 } 5792 }
5748 #endif 5793 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698