WebKit/chromium/src/WebHistoryItem.cpp
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     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 #include "config.h"
       
    32 #include "WebHistoryItem.h"
       
    33 
       
    34 #include "FormData.h"
       
    35 #include "HistoryItem.h"
       
    36 #include "KURL.h"
       
    37 
       
    38 #include "WebHTTPBody.h"
       
    39 #include "WebPoint.h"
       
    40 #include "WebSerializedScriptValue.h"
       
    41 #include "WebString.h"
       
    42 #include "WebVector.h"
       
    43 
       
    44 using namespace WebCore;
       
    45 
       
    46 namespace WebKit {
       
    47 
       
    48 void WebHistoryItem::initialize()
       
    49 {
       
    50     m_private = HistoryItem::create();
       
    51 }
       
    52 
       
    53 void WebHistoryItem::reset()
       
    54 {
       
    55     m_private.reset();
       
    56 }
       
    57 
       
    58 void WebHistoryItem::assign(const WebHistoryItem& other)
       
    59 {
       
    60     m_private = other.m_private;
       
    61 }
       
    62 
       
    63 WebString WebHistoryItem::urlString() const
       
    64 {
       
    65     return m_private->urlString();
       
    66 }
       
    67 
       
    68 void WebHistoryItem::setURLString(const WebString& url)
       
    69 {
       
    70     ensureMutable();
       
    71     m_private->setURLString(KURL(ParsedURLString, url).string());
       
    72 }
       
    73 
       
    74 WebString WebHistoryItem::originalURLString() const
       
    75 {
       
    76     return m_private->originalURLString();
       
    77 }
       
    78 
       
    79 void WebHistoryItem::setOriginalURLString(const WebString& originalURLString)
       
    80 {
       
    81     ensureMutable();
       
    82     m_private->setOriginalURLString(originalURLString);
       
    83 }
       
    84 
       
    85 WebString WebHistoryItem::referrer() const
       
    86 {
       
    87     return m_private->referrer();
       
    88 }
       
    89 
       
    90 void WebHistoryItem::setReferrer(const WebString& referrer)
       
    91 {
       
    92     ensureMutable();
       
    93     m_private->setReferrer(referrer);
       
    94 }
       
    95 
       
    96 WebString WebHistoryItem::target() const
       
    97 {
       
    98     return m_private->target();
       
    99 }
       
   100 
       
   101 void WebHistoryItem::setTarget(const WebString& target)
       
   102 {
       
   103     ensureMutable();
       
   104     m_private->setTarget(target);
       
   105 }
       
   106 
       
   107 WebString WebHistoryItem::parent() const
       
   108 {
       
   109     return m_private->parent();
       
   110 }
       
   111 
       
   112 void WebHistoryItem::setParent(const WebString& parent)
       
   113 {
       
   114     ensureMutable();
       
   115     m_private->setParent(parent);
       
   116 }
       
   117 
       
   118 WebString WebHistoryItem::title() const
       
   119 {
       
   120     return m_private->title();
       
   121 }
       
   122 
       
   123 void WebHistoryItem::setTitle(const WebString& title)
       
   124 {
       
   125     ensureMutable();
       
   126     m_private->setTitle(title);
       
   127 }
       
   128 
       
   129 WebString WebHistoryItem::alternateTitle() const
       
   130 {
       
   131     return m_private->alternateTitle();
       
   132 }
       
   133 
       
   134 void WebHistoryItem::setAlternateTitle(const WebString& alternateTitle)
       
   135 {
       
   136     ensureMutable();
       
   137     m_private->setAlternateTitle(alternateTitle);
       
   138 }
       
   139 
       
   140 double WebHistoryItem::lastVisitedTime() const
       
   141 {
       
   142     return m_private->lastVisitedTime();
       
   143 }
       
   144 
       
   145 void WebHistoryItem::setLastVisitedTime(double lastVisitedTime)
       
   146 {
       
   147     ensureMutable();
       
   148     // FIXME: setLastVisitedTime increments the visit count, so we have to
       
   149     // correct for that.  Instead, we should have a back-door to just mutate
       
   150     // the last visited time directly.
       
   151     int count = m_private->visitCount();
       
   152     m_private->setLastVisitedTime(lastVisitedTime);
       
   153     m_private->setVisitCount(count);
       
   154 }
       
   155 
       
   156 WebPoint WebHistoryItem::scrollOffset() const
       
   157 {
       
   158     return m_private->scrollPoint();
       
   159 }
       
   160 
       
   161 void WebHistoryItem::setScrollOffset(const WebPoint& scrollOffset)
       
   162 {
       
   163     ensureMutable();
       
   164     m_private->setScrollPoint(scrollOffset);
       
   165 }
       
   166 
       
   167 bool WebHistoryItem::isTargetItem() const
       
   168 {
       
   169     return m_private->isTargetItem();
       
   170 }
       
   171 
       
   172 void WebHistoryItem::setIsTargetItem(bool isTargetItem)
       
   173 {
       
   174     ensureMutable();
       
   175     m_private->setIsTargetItem(isTargetItem);
       
   176 }
       
   177 
       
   178 int WebHistoryItem::visitCount() const
       
   179 {
       
   180     return m_private->visitCount();
       
   181 }
       
   182 
       
   183 void WebHistoryItem::setVisitCount(int count)
       
   184 {
       
   185     ensureMutable();
       
   186     m_private->setVisitCount(count);
       
   187 }
       
   188 
       
   189 WebVector<WebString> WebHistoryItem::documentState() const
       
   190 {
       
   191     return m_private->documentState();
       
   192 }
       
   193 
       
   194 void WebHistoryItem::setDocumentState(const WebVector<WebString>& state)
       
   195 {
       
   196     ensureMutable();
       
   197     // FIXME: would be nice to avoid the intermediate copy
       
   198     Vector<String> ds;
       
   199     for (size_t i = 0; i < state.size(); ++i)
       
   200         ds.append(state[i]);
       
   201     m_private->setDocumentState(ds);
       
   202 }
       
   203 
       
   204 long long WebHistoryItem::itemSequenceNumber() const
       
   205 {
       
   206     return m_private->itemSequenceNumber();
       
   207 }
       
   208 
       
   209 void WebHistoryItem::setItemSequenceNumber(long long itemSequenceNumber)
       
   210 {
       
   211     ensureMutable();
       
   212     m_private->setItemSequenceNumber(itemSequenceNumber);
       
   213 }
       
   214 
       
   215 long long WebHistoryItem::documentSequenceNumber() const
       
   216 {
       
   217     return m_private->documentSequenceNumber();
       
   218 }
       
   219 
       
   220 void WebHistoryItem::setDocumentSequenceNumber(long long documentSequenceNumber)
       
   221 {
       
   222     ensureMutable();
       
   223     m_private->setDocumentSequenceNumber(documentSequenceNumber);
       
   224 }
       
   225 
       
   226 WebSerializedScriptValue WebHistoryItem::stateObject() const
       
   227 {
       
   228     return WebSerializedScriptValue(m_private->stateObject());
       
   229 }
       
   230 
       
   231 void WebHistoryItem::setStateObject(const WebSerializedScriptValue& object)
       
   232 {
       
   233     ensureMutable();
       
   234     m_private->setStateObject(object);
       
   235 }
       
   236 
       
   237 WebString WebHistoryItem::httpContentType() const
       
   238 {
       
   239     return m_private->formContentType();
       
   240 }
       
   241 
       
   242 void WebHistoryItem::setHTTPContentType(const WebString& httpContentType)
       
   243 {
       
   244     ensureMutable();
       
   245     m_private->setFormContentType(httpContentType);
       
   246 }
       
   247 
       
   248 WebHTTPBody WebHistoryItem::httpBody() const
       
   249 {
       
   250     return WebHTTPBody(m_private->formData());
       
   251 }
       
   252 
       
   253 void WebHistoryItem::setHTTPBody(const WebHTTPBody& httpBody)
       
   254 {
       
   255     ensureMutable();
       
   256     m_private->setFormData(httpBody);
       
   257 }
       
   258 
       
   259 WebVector<WebHistoryItem> WebHistoryItem::children() const
       
   260 {
       
   261     return m_private->children();
       
   262 }
       
   263 
       
   264 void WebHistoryItem::setChildren(const WebVector<WebHistoryItem>& items)
       
   265 {
       
   266     ensureMutable();
       
   267     m_private->clearChildren();
       
   268     for (size_t i = 0; i < items.size(); ++i)
       
   269         m_private->addChildItem(items[i]);
       
   270 }
       
   271 
       
   272 void WebHistoryItem::appendToChildren(const WebHistoryItem& item)
       
   273 {
       
   274     ensureMutable();
       
   275     m_private->addChildItem(item);
       
   276 }
       
   277 
       
   278 WebHistoryItem::WebHistoryItem(const PassRefPtr<HistoryItem>& item)
       
   279     : m_private(item)
       
   280 {
       
   281 }
       
   282 
       
   283 WebHistoryItem& WebHistoryItem::operator=(const PassRefPtr<HistoryItem>& item)
       
   284 {
       
   285     m_private = item;
       
   286     return *this;
       
   287 }
       
   288 
       
   289 WebHistoryItem::operator PassRefPtr<HistoryItem>() const
       
   290 {
       
   291     return m_private.get();
       
   292 }
       
   293 
       
   294 void WebHistoryItem::ensureMutable()
       
   295 {
       
   296     if (!m_private->hasOneRef())
       
   297         m_private = m_private->copy();
       
   298 }
       
   299 
       
   300 } // namespace WebKit