| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 , m_rewriteFolder(rewriteFolder) | 246 , m_rewriteFolder(rewriteFolder) |
| 247 { | 247 { |
| 248 } | 248 } |
| 249 | 249 |
| 250 void LinkChangeSerializerMarkupAccumulator::appendElement(StringBuilder& result,
Element& element, Namespaces* namespaces) | 250 void LinkChangeSerializerMarkupAccumulator::appendElement(StringBuilder& result,
Element& element, Namespaces* namespaces) |
| 251 { | 251 { |
| 252 if (element.hasTagName(HTMLNames::htmlTag)) { | 252 if (element.hasTagName(HTMLNames::htmlTag)) { |
| 253 // Add MOTW (Mark of the Web) declaration before html tag. | 253 // Add MOTW (Mark of the Web) declaration before html tag. |
| 254 // See http://msdn2.microsoft.com/en-us/library/ms537628(VS.85).aspx. | 254 // See http://msdn2.microsoft.com/en-us/library/ms537628(VS.85).aspx. |
| 255 result.append('\n'); | 255 result.append('\n'); |
| 256 MarkupFormatter::appendComment(result, String::format(" saved from url=(
%04d)%s ", | 256 MarkupFormatter::appendComment(result, PageSerializer::markOfTheWebDecla
ration(document().url())); |
| 257 static_cast<int>(document().url().string().utf8().length()), | |
| 258 document().url().string().utf8().data())); | |
| 259 result.append('\n'); | 257 result.append('\n'); |
| 260 } | 258 } |
| 261 | 259 |
| 262 if (element.hasTagName(HTMLNames::baseTag)) { | 260 if (element.hasTagName(HTMLNames::baseTag)) { |
| 263 // TODO(tiger): Refactor MarkupAccumulator so it is easier to append an
element like this, without special cases for XHTML | 261 // TODO(tiger): Refactor MarkupAccumulator so it is easier to append an
element like this, without special cases for XHTML |
| 264 // Append a new base tag declaration. | 262 // Append a new base tag declaration. |
| 265 result.appendLiteral("<base href=\".\""); | 263 result.appendLiteral("<base href=\".\""); |
| 266 if (!document().baseTarget().isEmpty()) { | 264 if (!document().baseTarget().isEmpty()) { |
| 267 result.appendLiteral(" target=\""); | 265 result.appendLiteral(" target=\""); |
| 268 MarkupFormatter::appendAttributeValue(result, document().baseTarget(
), document().isHTMLDocument()); | 266 MarkupFormatter::appendAttributeValue(result, document().baseTarget(
), document().isHTMLDocument()); |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 m_blankFrameURLs.add(frame, fakeURL); | 568 m_blankFrameURLs.add(frame, fakeURL); |
| 571 | 569 |
| 572 return fakeURL; | 570 return fakeURL; |
| 573 } | 571 } |
| 574 | 572 |
| 575 PageSerializer::Delegate* PageSerializer::delegate() | 573 PageSerializer::Delegate* PageSerializer::delegate() |
| 576 { | 574 { |
| 577 return m_delegate.get(); | 575 return m_delegate.get(); |
| 578 } | 576 } |
| 579 | 577 |
| 578 // Returns MOTW (Mark of the Web) declaration before html tag which is in |
| 579 // HTML comment, e.g. "<!-- saved from url=(%04d)%s -->" |
| 580 // See http://msdn2.microsoft.com/en-us/library/ms537628(VS.85).aspx. |
| 581 String PageSerializer::markOfTheWebDeclaration(const KURL& url) |
| 582 { |
| 583 StringBuilder builder; |
| 584 bool emitsMinus = false; |
| 585 CString orignalUrl = url.string().ascii(); |
| 586 for (const char* string = orignalUrl.data(); *string; ++string) { |
| 587 const char ch = *string; |
| 588 if (ch == '-' && emitsMinus) { |
| 589 builder.append("%2D"); |
| 590 emitsMinus = false; |
| 591 continue; |
| 592 } |
| 593 emitsMinus = ch == '-'; |
| 594 builder.append(ch); |
| 595 } |
| 596 CString escapedUrl = builder.toString().ascii(); |
| 597 return String::format("saved from url=(%04d)%s", static_cast<int>(escapedUrl
.length()), escapedUrl.data()); |
| 598 } |
| 599 |
| 580 } // namespace blink | 600 } // namespace blink |
| OLD | NEW |