1 /* 2 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #ifndef WebPageSerializer_h 32 #define WebPageSerializer_h 33 34 #include "WebCommon.h" 35 36 namespace WebKit { 37 class WebCString; 38 class WebFrame; 39 class WebPageSerializerClient; 40 class WebString; 41 class WebURL; 42 class WebView; 43 template <typename T> class WebVector; 44 45 // Get html data by serializing all frames of current page with lists 46 // which contain all resource links that have local copy. 47 class WebPageSerializer { 48 public: 49 // This function will find out all frames and serialize them to HTML data. 50 // We have a data buffer to temporary saving generated html data. We will 51 // sequentially call WebPageSeriazlierClient once the data buffer is full. 52 // 53 // Return false means no available frame has been serialized, otherwise 54 // return true. 55 // 56 // The parameter frame specifies which frame need to be serialized. 57 // The parameter recursive specifies whether we need to 58 // serialize all sub frames of the specified frame or not. 59 // The parameter client specifies the pointer of interface 60 // WebPageSerializerClient providing a sink interface to receive the 61 // individual chunks of data to be saved. 62 // The parameter links contain original URLs of all saved links. 63 // The parameter localPaths contain corresponding local file paths of all 64 // saved links, which matched with vector:links one by one. 65 // The parameter localDirectoryName is relative path of directory which 66 // contain all saved auxiliary files included all sub frames and resources. 67 WEBKIT_API static bool serialize(WebFrame* frame, 68 bool recursive, 69 WebPageSerializerClient* client, 70 const WebVector<WebURL>& links, 71 const WebVector<WebString>& localPaths, 72 const WebString& localDirectoryName); 73 74 // Retrieve all the resource for the passed view, including the main frame 75 // and sub-frames. Returns true if all resources were retrieved 76 // successfully. 77 WEBKIT_API static bool retrieveAllResources(WebView*, 78 const WebVector<WebCString>& supportedSchemes, 79 WebVector<WebURL>* resources, 80 WebVector<WebURL>* frames); 81 82 // FIXME: The following are here for unit testing purposes. Consider 83 // changing the unit tests instead. 84 85 // Generate the META for charset declaration. 86 WEBKIT_API static WebString generateMetaCharsetDeclaration(const WebString& charset); 87 // Generate the MOTW declaration. 88 WEBKIT_API static WebString generateMarkOfTheWebDeclaration(const WebURL& url); 89 // Generate the default base tag declaration. 90 WEBKIT_API static WebString generateBaseTagDeclaration(const WebString& baseTarget); 91 }; 92 93 } // namespace WebKit 94 95 #endif 96