Source/WebCore/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Introduce a new StringWithDirection object that carries a String along
 9 with the TextDirection associated with the String. Use this object for
 10 document titles used within WebCore, because in HTML the direction of
 11 a title can be set with the 'dir' attribute.
 12
 13 Put FIXMEs at the WebKit level to expose the new direction information
 14 to clients.
 15
 16 No behavioral change intended, so no new tests. A follow-up will expose
 17 the title direction and hopefully can be accompanied by tests that
 18 verify it is correct.
 19
 20 * dom/Document.cpp:
 21 (WebCore::Document::Document):
 22 (WebCore::Document::updateTitle):
 23 (WebCore::Document::setTitle):
 24 (WebCore::Document::removeTitle):
 25 * dom/Document.h:
 26 (WebCore::Document::title):
 27 * html/HTMLTitleElement.cpp:
 28 (WebCore::HTMLTitleElement::HTMLTitleElement):
 29 (WebCore::HTMLTitleElement::childrenChanged):
 30 (WebCore::HTMLTitleElement::text):
 31 (WebCore::HTMLTitleElement::textWithDirection):
 32 * html/HTMLTitleElement.h:
 33 * loader/DocumentLoader.cpp:
 34 (WebCore::DocumentLoader::setTitle):
 35 * loader/DocumentLoader.h:
 36 (WebCore::DocumentLoader::title):
 37 * loader/EmptyClients.h:
 38 (WebCore::EmptyFrameLoaderClient::dispatchDidReceiveTitle):
 39 (WebCore::EmptyFrameLoaderClient::setTitle):
 40 * loader/FrameLoader.cpp:
 41 (WebCore::FrameLoader::receivedFirstData):
 42 (WebCore::FrameLoader::commitProvisionalLoad):
 43 (WebCore::FrameLoader::setTitle):
 44 * loader/FrameLoader.h:
 45 * loader/FrameLoaderClient.h:
 46 * loader/HistoryController.cpp:
 47 (WebCore::HistoryController::updateForBackForwardNavigation):
 48 (WebCore::HistoryController::updateForReload):
 49 (WebCore::HistoryController::updateForRedirectWithLockedBackForwardList):
 50 (WebCore::HistoryController::updateForClientRedirect):
 51 (WebCore::HistoryController::updateForCommit):
 52 (WebCore::HistoryController::setCurrentItemTitle):
 53 (WebCore::HistoryController::initializeItem):
 54 * loader/HistoryController.h:
 55 * platform/text/StringWithDirection.h: Added.
 56 (WebCore::StringWithDirection::StringWithDirection):
 57 (WebCore::StringWithDirection::operator==):
 58 (WebCore::StringWithDirection::operator!=):
 59 * svg/SVGTitleElement.cpp:
 60 (WebCore::SVGTitleElement::insertedIntoDocument):
 61 (WebCore::SVGTitleElement::childrenChanged):
 62
1632011-03-29 Leo Yang <leo.yang@torchmobile.com.cn>
264
365 Reviewed by Nikolas Zimmermann.

Source/WebCore/WebCore.exp.in

@@__ZN7WebCore14DocumentLoader22cancelMainResourceLoadERKNS_13ResourceErrorE
341341__ZN7WebCore14DocumentLoader24removePlugInStreamLoaderEPNS_14ResourceLoaderE
342342__ZN7WebCore14DocumentLoader7requestEv
343343__ZN7WebCore14DocumentLoader8setFrameEPNS_5FrameE
344 __ZN7WebCore14DocumentLoader8setTitleERKN3WTF6StringE
 344__ZN7WebCore14DocumentLoader8setTitleERKNS_19StringWithDirectionE
345345__ZN7WebCore14DocumentLoaderC1ERKNS_15ResourceRequestERKNS_14SubstituteDataE
346346__ZN7WebCore14DocumentLoaderC2ERKNS_15ResourceRequestERKNS_14SubstituteDataE
347347__ZN7WebCore14DocumentLoaderD2Ev

Source/WebCore/dom/Document.cpp

@@Document::Document(Frame* frame, const KURL& url, bool isXHTML, bool isHTML)
389389 , m_containsValidityStyleRules(false)
390390 , m_updateFocusAppearanceRestoresSelection(false)
391391 , m_ignoreDestructiveWriteCount(0)
392  , m_title("")
393  , m_rawTitle("")
394392 , m_titleSetExplicitly(false)
395393 , m_updateFocusAppearanceTimer(this, &Document::updateFocusAppearanceTimerFired)
396394 , m_startTime(currentTime())

@@Element* Document::getElementByAccessKey(const String& key) const
12711269 * 2. Trim leading and trailing spaces
12721270 * 3. Collapse internal whitespace.
12731271 */
1274 static inline String canonicalizedTitle(Document* document, const String& title)
 1272static inline StringWithDirection canonicalizedTitle(Document* document, const StringWithDirection& titleWithDirection)
12751273{
 1274 const String& title = titleWithDirection.string();
12761275 const UChar* characters = title.characters();
12771276 unsigned length = title.length();
12781277 unsigned i;

@@static inline String canonicalizedTitle(Document* document, const String& title)
12881287 }
12891288
12901289 if (i == length)
1291  return "";
 1290 return StringWithDirection();
12921291
12931292 // Replace control characters with spaces, and backslashes with currency symbols, and collapse whitespace.
12941293 bool previousCharWasWS = false;

@@static inline String canonicalizedTitle(Document* document, const String& title)
13131312 }
13141313
13151314 if (!builderIndex && buffer[builderIndex] == ' ')
1316  return "";
 1315 return StringWithDirection();
13171316
13181317 buffer.shrink(builderIndex + 1);
13191318
13201319 // Replace the backslashes with currency symbols if the encoding requires it.
13211320 document->displayBufferModifiedByEncoding(buffer.characters(), buffer.length());
13221321
1323  return String::adopt(buffer);
 1322 return StringWithDirection(String::adopt(buffer), titleWithDirection.direction());
13241323}
13251324
13261325void Document::updateTitle()

@@void Document::updateTitle()
13301329 f->loader()->setTitle(m_title);
13311330}
13321331
1333 void Document::setTitle(const String& title, Element* titleElement)
 1332void Document::setTitle(const String& title)
 1333{
 1334 // This is called by JavaScript like document.title="foo", so we just assume LTR.
 1335 setTitle(StringWithDirection(title, LTR), 0);
 1336}
 1337
 1338void Document::setTitle(const StringWithDirection& title, Element* titleElement)
13341339{
13351340 if (!titleElement) {
13361341 // Title set by JavaScript -- overrides any title elements.

@@void Document::setTitle(const String& title, Element* titleElement)
13591364 updateTitle();
13601365
13611366 if (m_titleSetExplicitly && m_titleElement && m_titleElement->hasTagName(titleTag) && !titleElement)
1362  static_cast<HTMLTitleElement*>(m_titleElement.get())->setText(m_title);
 1367 static_cast<HTMLTitleElement*>(m_titleElement.get())->setText(m_title.string());
13631368}
13641369
13651370void Document::removeTitle(Element* titleElement)

@@void Document::removeTitle(Element* titleElement)
13751380 for (Node* e = headElement->firstChild(); e; e = e->nextSibling())
13761381 if (e->hasTagName(titleTag)) {
13771382 HTMLTitleElement* titleElement = static_cast<HTMLTitleElement*>(e);
1378  setTitle(titleElement->text(), titleElement);
 1383 setTitle(titleElement->textWithDirection(), titleElement);
13791384 break;
13801385 }
13811386 }
13821387
13831388 if (!m_titleElement && !m_rawTitle.isEmpty()) {
1384  m_rawTitle = "";
 1389 m_rawTitle = StringWithDirection();
13851390 updateTitle();
13861391 }
13871392}

Source/WebCore/dom/Document.h

3737#include "DocumentTiming.h"
3838#include "QualifiedName.h"
3939#include "ScriptExecutionContext.h"
 40#include "StringWithDirection.h"
4041#include "Timer.h"
4142#include "ViewportArguments.h"
4243#include <wtf/FixedArray.h>

@@public:
811812 // Returns 0 if this is the top level document.
812813 HTMLFrameOwnerElement* ownerElement() const;
813814
814  String title() const { return m_title; }
815  void setTitle(const String&, Element* titleElement = 0);
 815 // Used by DOM bindings; no direction known.
 816 String title() const { return m_title.string(); }
 817 void setTitle(const String&);
 818
 819 void setTitle(const StringWithDirection&, Element* titleElement);
816820 void removeTitle(Element* titleElement);
817821
818822 String cookie(ExceptionCode&) const;

@@private:
12941298 // http://www.whatwg.org/specs/web-apps/current-work/#ignore-destructive-writes-counter
12951299 unsigned m_ignoreDestructiveWriteCount;
12961300
1297  String m_title;
1298  String m_rawTitle;
 1301 StringWithDirection m_title;
 1302 StringWithDirection m_rawTitle;
12991303 bool m_titleSetExplicitly;
13001304 RefPtr<Element> m_titleElement;
13011305

Source/WebCore/html/HTMLTitleElement.cpp

2525
2626#include "Document.h"
2727#include "HTMLNames.h"
 28#include "RenderStyle.h"
2829#include "Text.h"
2930
3031namespace WebCore {

@@using namespace HTMLNames;
3334
3435inline HTMLTitleElement::HTMLTitleElement(const QualifiedName& tagName, Document* document)
3536 : HTMLElement(tagName, document)
36  , m_title("")
3737{
3838 ASSERT(hasTagName(titleTag));
3939}

@@void HTMLTitleElement::removedFromDocument()
5757
5858void HTMLTitleElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
5959{
60  m_title = text();
 60 m_title = textWithDirection();
6161 if (inDocument())
6262 document()->setTitle(m_title, this);
6363 HTMLElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);

@@String HTMLTitleElement::text() const
7171 if (n->isTextNode())
7272 val += static_cast<Text*>(n)->data();
7373 }
74 
 74
7575 return val;
7676}
7777
 78StringWithDirection HTMLTitleElement::textWithDirection()
 79{
 80 RenderStyle* style = computedStyle();
 81 return StringWithDirection(text(), style->direction());
 82}
 83
7884void HTMLTitleElement::setText(const String &value)
7985{
8086 ExceptionCode ec = 0;

Source/WebCore/html/HTMLTitleElement.h

2323#define HTMLTitleElement_h
2424
2525#include "HTMLElement.h"
 26#include "StringWithDirection.h"
2627
2728namespace WebCore {
2829

@@public:
3334 String text() const;
3435 void setText(const String&);
3536
 37 StringWithDirection textWithDirection();
 38
3639private:
3740 HTMLTitleElement(const QualifiedName&, Document*);
3841

@@private:
4043 virtual void removedFromDocument();
4144 virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
4245
43  String m_title;
 46 StringWithDirection m_title;
4447};
4548
4649} //namespace

Source/WebCore/loader/DocumentLoader.cpp

@@void DocumentLoader::stopRecordingResponses()
649649 m_stopRecordingResponses = true;
650650}
651651
652 void DocumentLoader::setTitle(const String& title)
 652void DocumentLoader::setTitle(const StringWithDirection& title)
653653{
654654 if (title.isEmpty())
655655 return;

Source/WebCore/loader/DocumentLoader.h

3636#include "ResourceError.h"
3737#include "ResourceRequest.h"
3838#include "ResourceResponse.h"
 39#include "StringWithDirection.h"
3940#include "SubstituteData.h"
4041#include "Timer.h"
4142#include <wtf/HashSet.h>

@@namespace WebCore {
121122 bool wasOnloadHandled() { return m_wasOnloadHandled; }
122123 bool isLoadingInAPISense() const;
123124 void setPrimaryLoadComplete(bool);
124  void setTitle(const String&);
 125 void setTitle(const StringWithDirection&);
125126 void setIconURL(const String&);
126127 const String& overrideEncoding() const { return m_overrideEncoding; }
127128

@@namespace WebCore {
168169 const ResourceRequest& lastCheckedRequest() { return m_lastCheckedRequest; }
169170
170171 void stopRecordingResponses();
171  const String& title() const { return m_pageTitle; }
 172 const StringWithDirection& title() const { return m_pageTitle; }
172173 const String& iconURL() const { return m_pageIconURL; }
173174
174175 KURL urlForHistory() const;

@@namespace WebCore {
298299 bool m_isClientRedirect;
299300 bool m_wasOnloadHandled;
300301
301  String m_pageTitle;
 302 StringWithDirection m_pageTitle;
302303 String m_pageIconURL;
303304
304305 String m_overrideEncoding;

Source/WebCore/loader/EmptyClients.h

@@public:
266266 virtual void dispatchWillClose() { }
267267 virtual void dispatchDidReceiveIcon() { }
268268 virtual void dispatchDidStartProvisionalLoad() { }
269  virtual void dispatchDidReceiveTitle(const String&) { }
 269 virtual void dispatchDidReceiveTitle(const StringWithDirection&) { }
270270 virtual void dispatchDidChangeIcons() { }
271271 virtual void dispatchDidCommitLoad() { }
272272 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }

@@public:
334334 virtual void prepareForDataSourceReplacement() { }
335335
336336 virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) { return DocumentLoader::create(request, substituteData); }
337  virtual void setTitle(const String&, const KURL&) { }
 337 virtual void setTitle(const StringWithDirection&, const KURL&) { }
338338
339339 virtual String userAgent(const KURL&) { return ""; }
340340

Source/WebCore/loader/FrameLoader.cpp

@@void FrameLoader::receivedFirstData()
610610 dispatchDidClearWindowObjectsInAllWorlds();
611611
612612 if (m_documentLoader) {
613  String ptitle = m_documentLoader->title();
 613 StringWithDirection ptitle = m_documentLoader->title();
614614 // If we have a title let the WebView know about it.
615615 if (!ptitle.isNull())
616616 m_client->dispatchDidReceiveTitle(ptitle);

@@void FrameLoader::commitProvisionalLoad()
19241924 dispatchDidCommitLoad();
19251925
19261926 // If we have a title let the WebView know about it.
1927  String title = m_documentLoader->title();
1928  if (!title.isNull())
1929  m_client->dispatchDidReceiveTitle(title);
 1927 StringWithDirection title = m_documentLoader->title();
 1928 if (!title.isNull())
 1929 m_client->dispatchDidReceiveTitle(title);
19301930
19311931 checkCompleted();
19321932 } else {

@@bool FrameLoader::canAuthenticateAgainstProtectionSpace(ResourceLoader* loader,
33753375}
33763376#endif
33773377
3378 void FrameLoader::setTitle(const String& title)
 3378void FrameLoader::setTitle(const StringWithDirection& title)
33793379{
33803380 documentLoader()->setTitle(title);
33813381}

Source/WebCore/loader/FrameLoader.h

@@class ScriptValue;
7878class SecurityOrigin;
7979class SerializedScriptValue;
8080class SharedBuffer;
 81class StringWithDirection;
8182class SubstituteData;
8283class TextResourceDecoder;
8384

@@public:
282283
283284 void cancelAndClear();
284285
285  void setTitle(const String&);
 286 void setTitle(const StringWithDirection&);
286287 void setIconURL(const String&);
287288
288289 void commitProvisionalLoad();

Source/WebCore/loader/FrameLoaderClient.h

@@namespace WebCore {
8484 class ResourceResponse;
8585 class SecurityOrigin;
8686 class SharedBuffer;
 87 class StringWithDirection;
8788 class SubstituteData;
8889 class Widget;
8990

@@namespace WebCore {
139140 virtual void dispatchWillClose() = 0;
140141 virtual void dispatchDidReceiveIcon() = 0;
141142 virtual void dispatchDidStartProvisionalLoad() = 0;
142  virtual void dispatchDidReceiveTitle(const String& title) = 0;
 143 virtual void dispatchDidReceiveTitle(const StringWithDirection&) = 0;
143144 virtual void dispatchDidChangeIcons() = 0;
144145 virtual void dispatchDidCommitLoad() = 0;
145146 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) = 0;

@@namespace WebCore {
227228 virtual void prepareForDataSourceReplacement() = 0;
228229
229230 virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) = 0;
230  virtual void setTitle(const String& title, const KURL&) = 0;
 231 virtual void setTitle(const StringWithDirection&, const KURL&) = 0;
231232
232233 virtual String userAgent(const KURL&) = 0;
233234

Source/WebCore/loader/HistoryController.cpp

@@void HistoryController::updateForBackForwardNavigation()
265265{
266266#if !LOG_DISABLED
267267 if (m_frame->loader()->documentLoader())
268  LOG(History, "WebCoreHistory: Updating History for back/forward navigation in frame %s", m_frame->loader()->documentLoader()->title().utf8().data());
 268 LOG(History, "WebCoreHistory: Updating History for back/forward navigation in frame %s", m_frame->loader()->documentLoader()->title().string().utf8().data());
269269#endif
270270
271271 // Must grab the current scroll position before disturbing it

@@void HistoryController::updateForReload()
281281{
282282#if !LOG_DISABLED
283283 if (m_frame->loader()->documentLoader())
284  LOG(History, "WebCoreHistory: Updating History for reload in frame %s", m_frame->loader()->documentLoader()->title().utf8().data());
 284 LOG(History, "WebCoreHistory: Updating History for reload in frame %s", m_frame->loader()->documentLoader()->title().string().utf8().data());
285285#endif
286286
287287 if (m_currentItem) {

@@void HistoryController::updateForRedirectWithLockedBackForwardList()
343343{
344344#if !LOG_DISABLED
345345 if (m_frame->loader()->documentLoader())
346  LOG(History, "WebCoreHistory: Updating History for redirect load in frame %s", m_frame->loader()->documentLoader()->title().utf8().data());
 346 LOG(History, "WebCoreHistory: Updating History for redirect load in frame %s", m_frame->loader()->documentLoader()->title().string().utf8().data());
347347#endif
348348
349349 Settings* settings = m_frame->settings();

@@void HistoryController::updateForClientRedirect()
385385{
386386#if !LOG_DISABLED
387387 if (m_frame->loader()->documentLoader())
388  LOG(History, "WebCoreHistory: Updating History for client redirect in frame %s", m_frame->loader()->documentLoader()->title().utf8().data());
 388 LOG(History, "WebCoreHistory: Updating History for client redirect in frame %s", m_frame->loader()->documentLoader()->title().string().utf8().data());
389389#endif
390390
391391 // Clear out form data so we don't try to restore it into the incoming page. Must happen after

@@void HistoryController::updateForCommit()
410410 FrameLoader* frameLoader = m_frame->loader();
411411#if !LOG_DISABLED
412412 if (frameLoader->documentLoader())
413  LOG(History, "WebCoreHistory: Updating History for commit in frame %s", frameLoader->documentLoader()->title().utf8().data());
 413 LOG(History, "WebCoreHistory: Updating History for commit in frame %s", frameLoader->documentLoader()->title().string().utf8().data());
414414#endif
415415 FrameLoadType type = frameLoader->loadType();
416416 if (isBackForwardLoadType(type)

@@void HistoryController::setCurrentItem(HistoryItem* item)
526526 m_currentItem = item;
527527}
528528
529 void HistoryController::setCurrentItemTitle(const String& title)
 529void HistoryController::setCurrentItemTitle(const StringWithDirection& title)
530530{
531531 if (m_currentItem)
532  m_currentItem->setTitle(title);
 532 // FIXME: make use of title.direction() as well.
 533 m_currentItem->setTitle(title.string());
533534}
534535
535536bool HistoryController::currentItemShouldBeReplaced() const

@@void HistoryController::initializeItem(HistoryItem* item)
576577
577578 Frame* parentFrame = m_frame->tree()->parent();
578579 String parent = parentFrame ? parentFrame->tree()->uniqueName() : "";
579  String title = documentLoader->title();
 580 StringWithDirection title = documentLoader->title();
580581
581582 item->setURL(url);
582583 item->setTarget(m_frame->tree()->uniqueName());
583584 item->setParent(parent);
584  item->setTitle(title);
 585 // FIXME: should store title directionality in history as well.
 586 item->setTitle(title.string());
585587 item->setOriginalURLString(originalURL.string());
586588
587589 if (!unreachableURL.isEmpty() || documentLoader->response().httpStatusCode() >= 400)

Source/WebCore/loader/HistoryController.h

@@namespace WebCore {
4040class Frame;
4141class HistoryItem;
4242class SerializedScriptValue;
 43class StringWithDirection;
4344
4445class HistoryController {
4546 WTF_MAKE_NONCOPYABLE(HistoryController);

@@public:
7172
7273 HistoryItem* currentItem() const { return m_currentItem.get(); }
7374 void setCurrentItem(HistoryItem*);
74  void setCurrentItemTitle(const String&);
 75 void setCurrentItemTitle(const StringWithDirection&);
7576 bool currentItemShouldBeReplaced() const;
7677
7778 HistoryItem* previousItem() const { return m_previousItem.get(); }

Source/WebCore/platform/text/StringWithDirection.h

 1/*
 2 * Copyright (C) 2011 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 StringWithDirection_h
 32#define StringWithDirection_h
 33
 34#include "PlatformString.h"
 35#include "TextDirection.h"
 36
 37namespace WebCore {
 38
 39// In some circumstances we want to store a String along with the TextDirection
 40// of the String as learned from the context of the String. For example,
 41// consider storing the title derived from <title dir='rtl'>some title</title>
 42// in the history.
 43//
 44// Note that is explicitly *not* the direction of the string as learned
 45// from the characters of the string; it's extra metadata we have external
 46// to the string.
 47class StringWithDirection {
 48public:
 49 StringWithDirection() {}
 50 StringWithDirection(const String& string, TextDirection dir) : m_string(string), m_direction(dir) {}
 51
 52 const String& string() const { return m_string; }
 53 TextDirection direction() const { return m_direction; }
 54
 55 bool isEmpty() const { return m_string.isEmpty(); }
 56 bool isNull() const { return m_string.isNull(); }
 57
 58 bool operator==(const StringWithDirection& other) const
 59 {
 60 return other.m_string == m_string && other.m_direction == m_direction;
 61 }
 62 bool operator!=(const StringWithDirection& other) const { return !((*this) == other); }
 63
 64private:
 65 String m_string;
 66 TextDirection m_direction;
 67};
 68
 69}
 70
 71#endif // StringWithDirection_h

Source/WebCore/svg/SVGTitleElement.cpp

@@void SVGTitleElement::insertedIntoDocument()
4040{
4141 SVGStyledElement::insertedIntoDocument();
4242 if (firstChild())
43  document()->setTitle(textContent(), this);
 43 // FIXME: does SVG have a concept of text direction?
 44 document()->setTitle(StringWithDirection(textContent(), LTR), this);
4445}
4546
4647void SVGTitleElement::removedFromDocument()

@@void SVGTitleElement::childrenChanged(bool changedByParser, Node* beforeChange,
5354{
5455 SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
5556 if (inDocument())
56  document()->setTitle(textContent(), this);
 57 // FIXME: does SVG have a concept of text direction?
 58 document()->setTitle(StringWithDirection(textContent(), LTR), this);
5759}
5860
5961AttributeToPropertyTypeMap& SVGTitleElement::attributeToPropertyTypeMap()

Source/WebKit/chromium/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * src/FrameLoaderClientImpl.cpp:
 11 (WebKit::FrameLoaderClientImpl::dispatchDidReceiveTitle):
 12 (WebKit::FrameLoaderClientImpl::setTitle):
 13 * src/FrameLoaderClientImpl.h:
 14 * src/WebDataSourceImpl.cpp:
 15 (WebKit::WebDataSourceImpl::pageTitle):
 16
1172011-03-29 Emil A Eklund <eae@chromium.org>
218
319 Reviewed by Dimitri Glazkov.

Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp

@@void FrameLoaderClientImpl::dispatchDidStartProvisionalLoad()
734734 }
735735}
736736
737 void FrameLoaderClientImpl::dispatchDidReceiveTitle(const String& title)
 737void FrameLoaderClientImpl::dispatchDidReceiveTitle(const StringWithDirection& title)
738738{
 739 // FIXME: use direction of title.
739740 if (m_webFrame->client())
740  m_webFrame->client()->didReceiveTitle(m_webFrame, title);
 741 m_webFrame->client()->didReceiveTitle(m_webFrame, title.string());
741742}
742743
743744void FrameLoaderClientImpl::dispatchDidChangeIcons()

@@PassRefPtr<DocumentLoader> FrameLoaderClientImpl::createDocumentLoader(
13281329 return ds.release();
13291330}
13301331
1331 void FrameLoaderClientImpl::setTitle(const String& title, const KURL& url)
 1332void FrameLoaderClientImpl::setTitle(const StringWithDirection& title, const KURL& url)
13321333{
13331334 // FIXME: inform consumer of changes to the title.
13341335}

Source/WebKit/chromium/src/FrameLoaderClientImpl.h

@@public:
104104 virtual void dispatchWillClose();
105105 virtual void dispatchDidReceiveIcon();
106106 virtual void dispatchDidStartProvisionalLoad();
107  virtual void dispatchDidReceiveTitle(const WTF::String& title);
 107 virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
108108 virtual void dispatchDidChangeIcons();
109109 virtual void dispatchDidCommitLoad();
110110 virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);

@@public:
166166 virtual void prepareForDataSourceReplacement();
167167 virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(
168168 const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
169  virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 169 virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
170170 virtual WTF::String userAgent(const WebCore::KURL&);
171171 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
172172 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);

Source/WebKit/chromium/src/WebDataSourceImpl.cpp

@@void WebDataSourceImpl::redirectChain(WebVector<WebURL>& result) const
8282
8383WebString WebDataSourceImpl::pageTitle() const
8484{
85  return title();
 85 // FIXME: use direction of title as well.
 86 return title().string();
8687}
8788
8889WebNavigationType WebDataSourceImpl::navigationType() const

Source/WebKit/efl/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebCoreSupport/FrameLoaderClientEfl.cpp:
 11 (WebCore::FrameLoaderClientEfl::dispatchDidReceiveTitle):
 12 (WebCore::FrameLoaderClientEfl::setTitle):
 13 * WebCoreSupport/FrameLoaderClientEfl.h:
 14
1152011-03-29 Gyuyoung Kim <gyuyoung.kim@samsung.com>
216
317 Reviewed by Antonio Gomes.

Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp

@@void FrameLoaderClientEfl::dispatchDidStartProvisionalLoad()
576576 ewk_view_load_provisional(m_view);
577577}
578578
579 void FrameLoaderClientEfl::dispatchDidReceiveTitle(const String& title)
 579void FrameLoaderClientEfl::dispatchDidReceiveTitle(const StringWithDirection& title)
580580{
581  CString cs = title.utf8();
 581 // FIXME: use direction of title.
 582 CString cs = title.string().utf8();
582583 ewk_frame_title_set(m_frame, cs.data());
583584
584585 if (ewk_view_frame_main_get(m_view) != m_frame)

@@void FrameLoaderClientEfl::prepareForDataSourceReplacement()
709710 notImplemented();
710711}
711712
712 void FrameLoaderClientEfl::setTitle(const String& title, const KURL& url)
 713void FrameLoaderClientEfl::setTitle(const StringWithDirection& title, const KURL& url)
713714{
714715 // no need for, dispatchDidReceiveTitle is the right callback
715716}

Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h

@@class FrameLoaderClientEfl : public FrameLoaderClient {
102102 virtual void dispatchWillClose();
103103 virtual void dispatchDidReceiveIcon();
104104 virtual void dispatchDidStartProvisionalLoad();
105  virtual void dispatchDidReceiveTitle(const String&);
 105 virtual void dispatchDidReceiveTitle(const StringWithDirection&);
106106 virtual void dispatchDidChangeIcons();
107107 virtual void dispatchDidCommitLoad();
108108 virtual void dispatchDidFailProvisionalLoad(const ResourceError&);

@@class FrameLoaderClientEfl : public FrameLoaderClient {
193193 virtual void prepareForDataSourceReplacement();
194194
195195 virtual WTF::PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&);
196  virtual void setTitle(const String& title, const KURL&);
 196 virtual void setTitle(const StringWithDirection& title, const KURL&);
197197
198198 virtual String userAgent(const KURL&);
199199

Source/WebKit/gtk/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebCoreSupport/FrameLoaderClientGtk.cpp:
 11 (WebKit::FrameLoaderClient::dispatchDidReceiveTitle):
 12 (WebKit::FrameLoaderClient::setTitle):
 13 * WebCoreSupport/FrameLoaderClientGtk.h:
 14
1152011-03-29 Philippe Normand <pnormand@igalia.com>
216
317 Unreviewed, disable an assert in testwebview due to

Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp

@@void FrameLoaderClient::dispatchDidStartProvisionalLoad()
949949 notifyStatus(m_frame, WEBKIT_LOAD_PROVISIONAL);
950950}
951951
952 void FrameLoaderClient::dispatchDidReceiveTitle(const String& title)
 952void FrameLoaderClient::dispatchDidReceiveTitle(const StringWithDirection& title)
953953{
954954 if (m_loadingErrorPage)
955955 return;
956956
957957 WebKitWebFramePrivate* priv = m_frame->priv;
958958 g_free(priv->title);
959  priv->title = g_strdup(title.utf8().data());
 959 // FIXME: use direction of title.
 960 priv->title = g_strdup(title.string().utf8().data());
960961
961962 g_signal_emit_by_name(m_frame, "title-changed", priv->title);
962963 g_object_notify(G_OBJECT(m_frame), "title");

@@void FrameLoaderClient::prepareForDataSourceReplacement()
11191120 notImplemented();
11201121}
11211122
1122 void FrameLoaderClient::setTitle(const String& title, const KURL& url)
 1123void FrameLoaderClient::setTitle(const StringWithDirection& title, const KURL& url)
11231124{
11241125 WebKitWebFramePrivate* frameData = m_frame->priv;
11251126 g_free(frameData->title);
1126  frameData->title = g_strdup(title.utf8().data());
 1127 // FIXME: use direction of title.
 1128 frameData->title = g_strdup(title.string().utf8().data());
11271129}
11281130
11291131void FrameLoaderClient::dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived)

Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h

@@namespace WebKit {
8181 virtual void dispatchWillClose();
8282 virtual void dispatchDidReceiveIcon();
8383 virtual void dispatchDidStartProvisionalLoad();
84  virtual void dispatchDidReceiveTitle(const WTF::String&);
 84 virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
8585 virtual void dispatchDidChangeIcons();
8686 virtual void dispatchDidCommitLoad();
8787 virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);

@@namespace WebKit {
174174 virtual void prepareForDataSourceReplacement();
175175
176176 virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
177  virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 177 virtual void setTitle(const WebCore::StringWithDirection& title, const WebCore::KURL&);
178178
179179 virtual WTF::String userAgent(const WebCore::KURL&);
180180

Source/WebKit/haiku/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebCoreSupport/FrameLoaderClientHaiku.cpp:
 11 (WebCore::FrameLoaderClientHaiku::dispatchDidReceiveTitle):
 12 * WebCoreSupport/FrameLoaderClientHaiku.h:
 13
1142011-03-25 Andy Estes <aestes@apple.com>
215
316 Reviewed by Adele Peterson.

Source/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp

@@void FrameLoaderClientHaiku::dispatchDidStartProvisionalLoad()
237237 }
238238}
239239
240 void FrameLoaderClientHaiku::dispatchDidReceiveTitle(const String& title)
 240void FrameLoaderClientHaiku::dispatchDidReceiveTitle(const StringWithTitle& title)
241241{
242242 if (m_webView) {
243  m_webView->SetPageTitle(title);
244 
 243 // FIXME: use direction of title.
 244 m_webView->SetPageTitle(title.m_string());
245245 BMessage message(TITLE_CHANGED);
246  message.AddString("title", title);
 246 message.AddString("title", title.string());
247247 m_messenger->SendMessage(&message);
248248 }
249249}

Source/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h

@@namespace WebCore {
102102 virtual void dispatchWillClose();
103103 virtual void dispatchDidReceiveIcon();
104104 virtual void dispatchDidStartProvisionalLoad();
105  virtual void dispatchDidReceiveTitle(const String& title);
 105 virtual void dispatchDidReceiveTitle(const StringWithDirection& title);
106106 virtual void dispatchDidCommitLoad();
107107 virtual void dispatchDidFinishDocumentLoad();
108108 virtual void dispatchDidFinishLoad();

@@namespace WebCore {
143143 virtual void addHistoryItemForFragmentScroll();
144144 virtual void didFinishLoad();
145145 virtual void prepareForDataSourceReplacement();
146  virtual void setTitle(const String& title, const KURL&);
 146 virtual void setTitle(const StringWithDirection&, const KURL&);
147147
148148 virtual String userAgent(const KURL&);
149149

Source/WebKit/mac/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebCoreSupport/WebFrameLoaderClient.h:
 11 * WebCoreSupport/WebFrameLoaderClient.mm:
 12 (WebFrameLoaderClient::dispatchDidReceiveTitle):
 13 (WebFrameLoaderClient::setTitle):
 14
1152011-03-28 Adele Peterson <adele@apple.com>
216
317 Reviewed by Eric Seidel.

Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h

@@private:
101101 virtual void dispatchWillClose();
102102 virtual void dispatchDidReceiveIcon();
103103 virtual void dispatchDidStartProvisionalLoad();
104  virtual void dispatchDidReceiveTitle(const WTF::String& title);
 104 virtual void dispatchDidReceiveTitle(const WTF::StringWithDirection&);
105105 virtual void dispatchDidChangeIcons();
106106 virtual void dispatchDidCommitLoad();
107107 virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);

@@private:
196196 virtual void prepareForDataSourceReplacement();
197197 virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
198198
199  virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 199 virtual void setTitle(const WTF::StringWithDirection&, const WebCore::KURL&);
200200
201201 virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement*,
202202 const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);

Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm

@@void WebFrameLoaderClient::dispatchDidStartProvisionalLoad()
624624 CallFrameLoadDelegate(implementations->didStartProvisionalLoadForFrameFunc, webView, @selector(webView:didStartProvisionalLoadForFrame:), m_webFrame.get());
625625}
626626
627 void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
 627void WebFrameLoaderClient::dispatchDidReceiveTitle(const StringWithDirection& title)
628628{
629629 WebView *webView = getWebView(m_webFrame.get());
630630 WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView);
631631 if (implementations->didReceiveTitleForFrameFunc)
632  CallFrameLoadDelegate(implementations->didReceiveTitleForFrameFunc, webView, @selector(webView:didReceiveTitle:forFrame:), (NSString *)title, m_webFrame.get());
 632 // FIXME: use direction of title.
 633 CallFrameLoadDelegate(implementations->didReceiveTitleForFrameFunc, webView, @selector(webView:didReceiveTitle:forFrame:), (NSString *)title.string(), m_webFrame.get());
633634}
634635
635636void WebFrameLoaderClient::dispatchDidChangeIcons()

@@PassRefPtr<DocumentLoader> WebFrameLoaderClient::createDocumentLoader(const Reso
11791180 return loader.release();
11801181}
11811182
1182 void WebFrameLoaderClient::setTitle(const String& title, const KURL& url)
 1183void WebFrameLoaderClient::setTitle(const StringWithDirection& title, const KURL& url)
11831184{
11841185 WebView* view = getWebView(m_webFrame.get());
11851186

@@void WebFrameLoaderClient::setTitle(const String& title, const KURL& url)
11881189 if (!implementations->setTitleFunc)
11891190 return;
11901191
1191  CallHistoryDelegate(implementations->setTitleFunc, view, @selector(webView:updateHistoryTitle:forURL:), (NSString *)title, (NSString *)url);
 1192 // FIXME: use direction of title.
 1193 CallHistoryDelegate(implementations->setTitleFunc, view, @selector(webView:updateHistoryTitle:forURL:), (NSString *)title.string(), (NSString *)url);
11921194 return;
11931195 }
11941196

Source/WebKit/qt/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebCoreSupport/FrameLoaderClientQt.cpp:
 11 (WebCore::FrameLoaderClientQt::dispatchDidReceiveTitle):
 12 (WebCore::FrameLoaderClientQt::setTitle):
 13 * WebCoreSupport/FrameLoaderClientQt.h:
 14
1152011-03-29 Alexis Menard <alexis.menard@openbossa.org>
216
317 Unreviewed build fix for build-webkit -minimal.

Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp

@@void FrameLoaderClientQt::dispatchDidStartProvisionalLoad()
447447}
448448
449449
450 void FrameLoaderClientQt::dispatchDidReceiveTitle(const String& title)
 450void FrameLoaderClientQt::dispatchDidReceiveTitle(const StringWithDirection& title)
451451{
 452 // FIXME: use direction of title.
452453 if (dumpFrameLoaderCallbacks)
453454 printf("%s - didReceiveTitle: %s\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame)), qPrintable(QString(title)));
454455

@@void FrameLoaderClientQt::prepareForDataSourceReplacement()
709710{
710711}
711712
712 void FrameLoaderClientQt::setTitle(const String& title, const KURL& url)
 713void FrameLoaderClientQt::setTitle(const StringWithTitle& title, const KURL& url)
713714{
714715 // Used by Apple WebKit to update the title of an existing history item.
715716 // QtWebKit doesn't accomodate this on history items. If it ever does,
716717 // it should be privateBrowsing-aware.For now, we are just passing
717718 // globalhistory layout tests.
 719 // FIXME: use direction of title.
718720 if (dumpHistoryCallbacks) {
719721 printf("WebView updated the title for history URL \"%s\" to \"%s\".\n",
720722 qPrintable(drtDescriptionSuitableForTestResult(url)),
721  qPrintable(QString(title)));
 723 qPrintable(QString(title.string())));
722724 }
723725}
724726

Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h

@@public:
110110 virtual void dispatchWillClose();
111111 virtual void dispatchDidReceiveIcon();
112112 virtual void dispatchDidStartProvisionalLoad();
113  virtual void dispatchDidReceiveTitle(const String& title);
 113 virtual void dispatchDidReceiveTitle(const StringWithTitle&);
114114 virtual void dispatchDidChangeIcons();
115115 virtual void dispatchDidCommitLoad();
116116 virtual void dispatchDidFailProvisionalLoad(const ResourceError&);

@@public:
186186 virtual void prepareForDataSourceReplacement();
187187
188188 virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
189  virtual void setTitle(const String& title, const KURL&);
 189 virtual void setTitle(const StringWithTitle&, const KURL&);
190190
191191 virtual String userAgent(const WebCore::KURL&);
192192

Source/WebKit/win/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebCoreSupport/WebFrameLoaderClient.cpp:
 11 (WebFrameLoaderClient::dispatchDidReceiveTitle):
 12 * WebCoreSupport/WebFrameLoaderClient.h:
 13
1142011-03-28 Patrick Gansterer <paroga@webkit.org>
215
316 Reviewed by Adam Roben.

Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp

@@void WebFrameLoaderClient::dispatchDidStartProvisionalLoad()
366366 frameLoadDelegate->didStartProvisionalLoadForFrame(webView, m_webFrame);
367367}
368368
369 void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
 369void WebFrameLoaderClient::dispatchDidReceiveTitle(const StringWithTitle& title)
370370{
371371 WebView* webView = m_webFrame->webView();
372372 COMPtr<IWebFrameLoadDelegate> frameLoadDelegate;
373373 if (SUCCEEDED(webView->frameLoadDelegate(&frameLoadDelegate)))
374  frameLoadDelegate->didReceiveTitle(webView, BString(title), m_webFrame);
 374 // FIXME: use direction of title.
 375 frameLoadDelegate->didReceiveTitle(webView, BString(title.string()), m_webFrame);
375376}
376377
377378void WebFrameLoaderClient::dispatchDidChangeIcons()

Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h

@@public:
7171 virtual void dispatchWillClose();
7272 virtual void dispatchDidReceiveIcon();
7373 virtual void dispatchDidStartProvisionalLoad();
74  virtual void dispatchDidReceiveTitle(const WTF::String&);
 74 virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
7575 virtual void dispatchDidChangeIcons();
7676 virtual void dispatchDidCommitLoad();
7777 virtual void dispatchDidFinishDocumentLoad();

@@public:
105105 virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
106106
107107 virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
108  virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 108 virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
109109
110110 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
111111 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);

Source/WebKit/wince/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebCoreSupport/FrameLoaderClientWinCE.cpp:
 11 (WebKit::FrameLoaderClientWinCE::dispatchDidReceiveTitle):
 12 (WebKit::FrameLoaderClientWinCE::setTitle):
 13 * WebCoreSupport/FrameLoaderClientWinCE.h:
 14
1152011-03-27 Patrick Gansterer <paroga@webkit.org>
216
317 Reviewed by Andreas Kling.

Source/WebKit/wince/WebCoreSupport/FrameLoaderClientWinCE.cpp

@@void FrameLoaderClientWinCE::dispatchDidStartProvisionalLoad()
371371 notImplemented();
372372}
373373
374 void FrameLoaderClientWinCE::dispatchDidReceiveTitle(const String&)
 374void FrameLoaderClientWinCE::dispatchDidReceiveTitle(const StringWithDirection&)
375375{
376376 notImplemented();
377377}

@@void FrameLoaderClientWinCE::prepareForDataSourceReplacement()
490490 notImplemented();
491491}
492492
493 void FrameLoaderClientWinCE::setTitle(const String&, const KURL&)
 493void FrameLoaderClientWinCE::setTitle(const StringWithTitle&, const KURL&)
494494{
495495 notImplemented();
496496}

Source/WebKit/wince/WebCoreSupport/FrameLoaderClientWinCE.h

@@public:
7676 virtual void dispatchWillClose();
7777 virtual void dispatchDidReceiveIcon();
7878 virtual void dispatchDidStartProvisionalLoad();
79  virtual void dispatchDidReceiveTitle(const WTF::String&);
 79 virtual void dispatchDidReceiveTitle(const WTF::StringWithDirection&);
8080 virtual void dispatchDidChangeIcons();
8181 virtual void dispatchDidCommitLoad();
8282 virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);

@@public:
169169 virtual void prepareForDataSourceReplacement();
170170
171171 virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
172  virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 172 virtual void setTitle(const WTF::StringWithDirection&, const WebCore::KURL&);
173173
174174 virtual WTF::String userAgent(const WebCore::KURL&);
175175

Source/WebKit/wx/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebKitSupport/FrameLoaderClientWx.cpp:
 11 (WebCore::FrameLoaderClientWx::dispatchDidReceiveTitle):
 12 (WebCore::FrameLoaderClientWx::setTitle):
 13 * WebKitSupport/FrameLoaderClientWx.h:
 14
1152011-03-25 Andy Estes <aestes@apple.com>
216
317 Reviewed by Adele Peterson.

Source/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp

@@void FrameLoaderClientWx::dispatchDidStartProvisionalLoad()
295295}
296296
297297
298 void FrameLoaderClientWx::dispatchDidReceiveTitle(const String& title)
 298void FrameLoaderClientWx::dispatchDidReceiveTitle(const StringWithTitle& title)
299299{
300300 if (m_webView) {
301  m_webView->SetPageTitle(title);
 301 // FIXME: use direction of title.
 302 m_webView->SetPageTitle(title.string());
302303 wxWebViewReceivedTitleEvent wkEvent(m_webView);
303  wkEvent.SetTitle(title);
 304 wkEvent.SetTitle(title.string());
304305 m_webView->GetEventHandler()->ProcessEvent(wkEvent);
305306 }
306307}

@@void FrameLoaderClientWx::prepareForDataSourceReplacement()
525526}
526527
527528
528 void FrameLoaderClientWx::setTitle(const String& title, const KURL&)
 529void FrameLoaderClientWx::setTitle(const StringWithDirection& title, const KURL&)
529530{
530531 notImplemented();
531532}

Source/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h

@@namespace WebCore {
103103 virtual void dispatchWillClose();
104104 virtual void dispatchDidReceiveIcon();
105105 virtual void dispatchDidStartProvisionalLoad();
106  virtual void dispatchDidReceiveTitle(const String& title);
 106 virtual void dispatchDidReceiveTitle(const StringWithDirection& title);
107107 virtual void dispatchDidCommitLoad();
108108 virtual void dispatchDidFinishDocumentLoad();
109109 virtual void dispatchDidFinishLoad();

@@namespace WebCore {
145145 virtual void addHistoryItemForFragmentScroll();
146146 virtual void didFinishLoad();
147147 virtual void prepareForDataSourceReplacement();
148  virtual void setTitle(const String& title, const KURL&);
 148 virtual void setTitle(const StringWithDirection&, const KURL&);
149149
150150 virtual String userAgent(const KURL&);
151151

Source/WebKit2/ChangeLog

 12011-03-28 Evan Martin <evan@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 <title> should support dir attribute
 6 https://bugs.webkit.org/show_bug.cgi?id=50961
 7
 8 Update to new FrameLoaderClient interface.
 9
 10 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
 11 (WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
 12 (WebKit::WebFrameLoaderClient::setTitle):
 13 * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
 14
1152011-03-29 Balazs Kelemen <kbalazs@webkit.org>
216
317 Unreviewed build fix (64 bit gcc).

Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

@@void WebFrameLoaderClient::dispatchDidStartProvisionalLoad()
403403 webPage->send(Messages::WebPageProxy::DidStartProvisionalLoadForFrame(m_frame->frameID(), url, unreachableURL, InjectedBundleUserMessageEncoder(userData.get())));
404404}
405405
406 void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
 406void WebFrameLoaderClient::dispatchDidReceiveTitle(const StringWithDirection& title)
407407{
408408 WebPage* webPage = m_frame->page();
409409 if (!webPage)

@@void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
412412 RefPtr<APIObject> userData;
413413
414414 // Notify the bundle client.
415  webPage->injectedBundleLoaderClient().didReceiveTitleForFrame(webPage, title, m_frame, userData);
 415 // FIXME: use direction of title.
 416 webPage->injectedBundleLoaderClient().didReceiveTitleForFrame(webPage, title.string(), m_frame, userData);
416417
417418 // Notify the UIProcess.
418  webPage->send(Messages::WebPageProxy::DidReceiveTitleForFrame(m_frame->frameID(), title, InjectedBundleUserMessageEncoder(userData.get())));
 419 webPage->send(Messages::WebPageProxy::DidReceiveTitleForFrame(m_frame->frameID(), title.string(), InjectedBundleUserMessageEncoder(userData.get())));
419420}
420421
421422void WebFrameLoaderClient::dispatchDidChangeIcons()

@@void WebFrameLoaderClient::updateGlobalHistory()
846847
847848 WebNavigationDataStore data;
848849 data.url = loader->urlForHistory().string();
849  data.title = loader->title();
 850 // FIXME: use direction of title.
 851 data.title = loader->title().string();
850852
851853 WebProcess::shared().connection()->send(Messages::WebContext::DidNavigateWithNavigationData(webPage->pageID(), data, m_frame->frameID()), 0);
852854}

@@PassRefPtr<DocumentLoader> WebFrameLoaderClient::createDocumentLoader(const Reso
10611063 return DocumentLoader::create(request, data);
10621064}
10631065
1064 void WebFrameLoaderClient::setTitle(const String& title, const KURL& url)
 1066void WebFrameLoaderClient::setTitle(const StringWithDirection& title, const KURL& url)
10651067{
10661068 WebPage* webPage = m_frame->page();
10671069 if (!webPage)
10681070 return;
10691071
 1072 // FIXME: use direction of title.
10701073 WebProcess::shared().connection()->send(Messages::WebContext::DidUpdateHistoryTitle(webPage->pageID(),
1071  title, url.string(), m_frame->frameID()), 0);
 1074 title.string(), url.string(), m_frame->frameID()), 0);
10721075}
10731076
10741077String WebFrameLoaderClient::userAgent(const KURL&)

Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h

@@private:
8484 virtual void dispatchWillClose();
8585 virtual void dispatchDidReceiveIcon();
8686 virtual void dispatchDidStartProvisionalLoad();
87  virtual void dispatchDidReceiveTitle(const String& title);
 87 virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
8888 virtual void dispatchDidChangeIcons();
8989 virtual void dispatchDidCommitLoad();
9090 virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);

@@private:
165165 virtual void prepareForDataSourceReplacement();
166166
167167 virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
168  virtual void setTitle(const String& title, const WebCore::KURL&);
 168 virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
169169
170170 virtual String userAgent(const WebCore::KURL&);
171171