webengine/osswebengine/WebCore/loader/FrameLoader.cpp
branchRCL_3
changeset 93 79859ed3eea9
parent 91 30342f40acbf
child 94 919f36ff910f
equal deleted inserted replaced
92:e1bea15f9a39 93:79859ed3eea9
    60 #include "HistoryItem.h"
    60 #include "HistoryItem.h"
    61 #include "IconDatabase.h"
    61 #include "IconDatabase.h"
    62 #include "IconLoader.h"
    62 #include "IconLoader.h"
    63 #include "InspectorController.h"
    63 #include "InspectorController.h"
    64 #include "Logging.h"
    64 #include "Logging.h"
    65 #include "MIMETypeRegistry.h"
    65 #include "MimeTypeRegistry.h"
    66 #include "MainResourceLoader.h"
    66 #include "MainResourceLoader.h"
    67 #include "Page.h"
    67 #include "Page.h"
    68 #include "PageCache.h"
    68 #include "PageCache.h"
    69 #include "ProgressTracker.h"
    69 #include "ProgressTracker.h"
    70 #include "RenderPart.h"
    70 #include "RenderPart.h"
    75 #include "SegmentedString.h"
    75 #include "SegmentedString.h"
    76 #include "Settings.h"
    76 #include "Settings.h"
    77 #include "SystemTime.h"
    77 #include "SystemTime.h"
    78 #include "TextResourceDecoder.h"
    78 #include "TextResourceDecoder.h"
    79 #include "WindowFeatures.h"
    79 #include "WindowFeatures.h"
    80 #include "XMLHttpRequest.h"
    80 #include "xmlhttprequest.h"
    81 #include "XMLTokenizer.h"
    81 #include "XMLTokenizer.h"
    82 #include "kjs_binding.h"
    82 #include "kjs_binding.h"
    83 #include "kjs_proxy.h"
    83 #include "kjs_proxy.h"
    84 #include "kjs_window.h"
    84 #include "kjs_window.h"
    85 #include <kjs/JSLock.h>
    85 #include <kjs/JSLock.h>
   224     , m_isRunningScript(false)
   224     , m_isRunningScript(false)
   225     , m_didCallImplicitClose(false)
   225     , m_didCallImplicitClose(false)
   226     , m_wasUnloadEventEmitted(false)
   226     , m_wasUnloadEventEmitted(false)
   227     , m_isComplete(false)
   227     , m_isComplete(false)
   228     , m_isLoadingMainResource(false)
   228     , m_isLoadingMainResource(false)
   229     , m_mayLoadIconLater(false)    
       
   230     , m_cancellingWithLoadInProgress(false)
   229     , m_cancellingWithLoadInProgress(false)
   231     , m_needsClear(false)
   230     , m_needsClear(false)
   232     , m_receivedData(false)
   231     , m_receivedData(false)
   233     , m_encodingWasChosenByUser(false)
   232     , m_encodingWasChosenByUser(false)
   234     , m_containsPlugIns(false)
   233     , m_containsPlugIns(false)
  1042         startIconLoader();
  1041         startIconLoader();
  1043 }
  1042 }
  1044 
  1043 
  1045 void FrameLoader::iconLoadDecisionAvailable()
  1044 void FrameLoader::iconLoadDecisionAvailable()
  1046 {
  1045 {
       
  1046     if (!m_mayLoadIconLater)
       
  1047         return;
  1047     LOG(IconDatabase, "FrameLoader %p was told a load decision is available for its icon", this);
  1048     LOG(IconDatabase, "FrameLoader %p was told a load decision is available for its icon", this);
  1048     if (m_mayLoadIconLater) {
  1049     startIconLoader();
  1049         // Notfification came from iconDataBase to load the icon
  1050     m_mayLoadIconLater = false;
  1050         startIconLoader();
       
  1051         m_mayLoadIconLater = false;
       
  1052     } else {
       
  1053         // Icon was specified in <link> tag with rel="icon" or rel="shortcut icon" property
       
  1054         if(m_iconLoader)
       
  1055             m_iconLoader->stopLoading(); // cancel previous loading state
       
  1056         startIconLoader();
       
  1057     }
       
  1058 }
  1051 }
  1059 
  1052 
  1060 void FrameLoader::startIconLoader()
  1053 void FrameLoader::startIconLoader()
  1061 {
  1054 {
  1062     // FIXME: We kick off the icon loader when the frame is done receiving its main resource.
  1055     // FIXME: We kick off the icon loader when the frame is done receiving its main resource.
  1516     // Scroll nested layers and frames to reveal the anchor.
  1509     // Scroll nested layers and frames to reveal the anchor.
  1517     // Align to the top and to the closest side (this matches other browsers).
  1510     // Align to the top and to the closest side (this matches other browsers).
  1518     RenderObject* renderer;
  1511     RenderObject* renderer;
  1519     IntRect rect;
  1512     IntRect rect;
  1520     if (!anchorNode)
  1513     if (!anchorNode)
  1521         {
       
  1522         renderer = m_frame->document()->renderer(); // top of document
  1514         renderer = m_frame->document()->renderer(); // top of document
  1523         rect = m_frame->document()->getRect();
       
  1524         }
       
  1525     else {
  1515     else {
  1526         renderer = anchorNode->renderer();
  1516         renderer = anchorNode->renderer();
  1527         rect = anchorNode->getRect();
  1517         rect = anchorNode->getRect();
  1528     }
  1518     }
  1529     if (renderer)
  1519     if (renderer)
  1530              renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignTopAlways);                         
  1520         renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignTopAlways);
  1531 
  1521 
  1532     return true;
  1522     return true;
  1533 }
  1523 }
  1534 
  1524 
  1535 bool FrameLoader::requestObject(RenderPart* renderer, const String& url, const AtomicString& frameName,
  1525 bool FrameLoader::requestObject(RenderPart* renderer, const String& url, const AtomicString& frameName,