⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 khtml_part.cpp.orig

📁 konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版本源码包.
💻 ORIG
📖 第 1 页 / 共 5 页
字号:
  }  if (d->m_statusBarIconLabel) {    if (d->m_ssl_in_use)      QToolTip::add(d->m_statusBarIconLabel,		    i18n("Session is secured with %1 bit %2.").arg(d->m_ssl_cipher_used_bits).arg(d->m_ssl_cipher));    else QToolTip::add(d->m_statusBarIconLabel, i18n("Session is not secured."));  }  QString iconName;  switch (sec)  {  case NotCrypted:    iconName = "decrypted";    if ( d->m_statusBarIconLabel )  {      d->m_statusBarExtension->removeStatusBarItem( d->m_statusBarIconLabel );      delete d->m_statusBarIconLabel;      d->m_statusBarIconLabel = 0L;    }    break;  case Encrypted:    iconName = "encrypted";    break;  case Mixed:    iconName = "halfencrypted";    break;  }  d->m_paSecurity->setIcon( iconName );  if ( d->m_statusBarIconLabel )    d->m_statusBarIconLabel->setPixmap( SmallIcon( iconName, instance() ) );#endif // KONQ_EMBEDDED}void KHTMLPart::slotData( KIO::Job* kio_job, const QByteArray &data ){  assert ( d->m_job == kio_job );  //kdDebug( 6050 ) << "slotData: " << data.size() << endl;  // The first data ?  if ( !d->m_workingURL.isEmpty() )  {      //kdDebug( 6050 ) << "begin!" << endl;    // We must suspend KIO while we're inside begin() because it can cause    // crashes if a window (such as kjsdebugger) goes back into the event loop,    // more data arrives, and begin() gets called again (re-entered).    d->m_job->suspend();    begin( d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset );    d->m_job->resume();    if (d->m_cachePolicy == KIO::CC_Refresh)      d->m_doc->docLoader()->setCachePolicy(KIO::CC_Verify);    else      d->m_doc->docLoader()->setCachePolicy(d->m_cachePolicy);    d->m_workingURL = KURL();    d->m_cacheId = KHTMLPageCache::self()->createCacheEntry();    // When the first data arrives, the metadata has just been made available    d->m_httpHeaders = d->m_job->queryMetaData("HTTP-Headers");    time_t cacheCreationDate =  d->m_job->queryMetaData("cache-creation-date").toLong();    d->m_doc->docLoader()->setCacheCreationDate(cacheCreationDate);    d->m_pageServices = d->m_job->queryMetaData("PageServices");    d->m_pageReferrer = d->m_job->queryMetaData("referrer");    d->m_bSecurityInQuestion = false;    d->m_ssl_in_use = (d->m_job->queryMetaData("ssl_in_use") == "TRUE");    {    KHTMLPart *p = parentPart();    if (p && p->d->m_ssl_in_use != d->m_ssl_in_use) {	while (p->parentPart()) p = p->parentPart();        p->setPageSecurity( Mixed );        p->d->m_bSecurityInQuestion = true;    }    }    setPageSecurity( d->m_ssl_in_use ? Encrypted : NotCrypted );    // Shouldn't all of this be done only if ssl_in_use == true ? (DF)    d->m_ssl_parent_ip = d->m_job->queryMetaData("ssl_parent_ip");    d->m_ssl_parent_cert = d->m_job->queryMetaData("ssl_parent_cert");    d->m_ssl_peer_certificate = d->m_job->queryMetaData("ssl_peer_certificate");    d->m_ssl_peer_chain = d->m_job->queryMetaData("ssl_peer_chain");    d->m_ssl_peer_ip = d->m_job->queryMetaData("ssl_peer_ip");    d->m_ssl_cipher = d->m_job->queryMetaData("ssl_cipher");    d->m_ssl_cipher_desc = d->m_job->queryMetaData("ssl_cipher_desc");    d->m_ssl_cipher_version = d->m_job->queryMetaData("ssl_cipher_version");    d->m_ssl_cipher_used_bits = d->m_job->queryMetaData("ssl_cipher_used_bits");    d->m_ssl_cipher_bits = d->m_job->queryMetaData("ssl_cipher_bits");    d->m_ssl_cert_state = d->m_job->queryMetaData("ssl_cert_state");    if (d->m_statusBarIconLabel) {      QToolTip::remove(d->m_statusBarIconLabel);      if (d->m_ssl_in_use) {        QToolTip::add(d->m_statusBarIconLabel, i18n("Session is secured with %1 bit %2.").arg(d->m_ssl_cipher_used_bits).arg(d->m_ssl_cipher));      } else {        QToolTip::add(d->m_statusBarIconLabel, i18n("Session is not secured."));      }    }    // Check for charset meta-data    QString qData = d->m_job->queryMetaData("charset");    if ( !qData.isEmpty() && !d->m_haveEncoding ) // only use information if the user didn't override the settings       d->m_encoding = qData;    // Support for http-refresh    qData = d->m_job->queryMetaData("http-refresh");    if( !qData.isEmpty())      d->m_doc->processHttpEquiv("refresh", qData);    // DISABLED: Support Content-Location per section 14.14 of RFC 2616.    // See BR# 51185,BR# 82747    /*    QString baseURL = d->m_job->queryMetaData ("content-location");    if (!baseURL.isEmpty())      d->m_doc->setBaseURL(KURL( d->m_doc->completeURL(baseURL) ));    */    if ( !m_url.isLocalFile() ) {        // Support for http last-modified        d->m_lastModified = d->m_job->queryMetaData("modified");    } else        d->m_lastModified = QString::null; // done on-demand by lastModified()  }  KHTMLPageCache::self()->addData(d->m_cacheId, data);  write( data.data(), data.size() );  if (d->m_frame && d->m_frame->m_jscript)    d->m_frame->m_jscript->dataReceived();}void KHTMLPart::slotRestoreData(const QByteArray &data ){  // The first data ?  if ( !d->m_workingURL.isEmpty() )  {     long saveCacheId = d->m_cacheId;     QString savePageReferrer = d->m_pageReferrer;     QString saveEncoding     = d->m_encoding;     begin( d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset );     d->m_encoding     = saveEncoding;     d->m_pageReferrer = savePageReferrer;     d->m_cacheId = saveCacheId;     d->m_workingURL = KURL();  }  //kdDebug( 6050 ) << "slotRestoreData: " << data.size() << endl;  write( data.data(), data.size() );  if (data.size() == 0)  {      //kdDebug( 6050 ) << "slotRestoreData: <<end of data>>" << endl;     // End of data.    if (d->m_doc && d->m_doc->parsing())        end(); //will emit completed()  }}void KHTMLPart::showError( KIO::Job* job ){  kdDebug(6050) << "KHTMLPart::showError d->m_bParsing=" << (d->m_doc && d->m_doc->parsing()) << " d->m_bComplete=" << d->m_bComplete                << " d->m_bCleared=" << d->m_bCleared << endl;  if (job->error() == KIO::ERR_NO_CONTENT)	return;  if ( (d->m_doc && d->m_doc->parsing()) || d->m_workingURL.isEmpty() ) // if we got any data already    job->showErrorDialog( /*d->m_view*/ );  else  {    htmlError( job->error(), job->errorText(), d->m_workingURL );  }}// This is a protected method, placed here because of it's relevance to showErrorvoid KHTMLPart::htmlError( int errorCode, const QString& text, const KURL& reqUrl ){  kdDebug(6050) << "KHTMLPart::htmlError errorCode=" << errorCode << " text=" << text << endl;  // make sure we're not executing any embedded JS  bool bJSFO = d->m_bJScriptForce;  bool bJSOO = d->m_bJScriptOverride;  d->m_bJScriptForce = false;  d->m_bJScriptOverride = true;  begin();  QString errText = QString::fromLatin1( "<HTML dir=%1><HEAD><TITLE>" )                           .arg(QApplication::reverseLayout() ? "rtl" : "ltr");  errText += i18n( "Error while loading %1" ).arg( reqUrl.htmlURL() );  errText += QString::fromLatin1( "</TITLE></HEAD><BODY><P>" );  errText += i18n( "An error occurred while loading <B>%1</B>:" ).arg( reqUrl.htmlURL() );  errText += QString::fromLatin1( "</P>" );  errText += QStyleSheet::convertFromPlainText( KIO::buildErrorString( errorCode, text ) );  errText += QString::fromLatin1( "</BODY></HTML>" );  write(errText);  end();  d->m_bJScriptForce = bJSFO;  d->m_bJScriptOverride = bJSOO;  // make the working url the current url, so that reload works and  // emit the progress signals to advance one step in the history  // (so that 'back' works)  m_url = reqUrl; // same as d->m_workingURL  d->m_workingURL = KURL();  emit started( 0 );  emit completed();  return;  // following disabled until 3.1  QString errorName, techName, description;  QStringList causes, solutions;  QByteArray raw = KIO::rawErrorDetail( errorCode, text, &reqUrl );  QDataStream stream(raw, IO_ReadOnly);  stream >> errorName >> techName >> description >> causes >> solutions;  QString url, protocol, datetime;  url = reqUrl.prettyURL();  protocol = reqUrl.protocol();  datetime = KGlobal::locale()->formatDateTime( QDateTime::currentDateTime(),                                                false );  QString doc = QString::fromLatin1( "<html><head><title>" );  doc += i18n( "Error: " );  doc += errorName;  doc += QString::fromLatin1( " - %1</title></head><body><h1>" ).arg( url );  doc += i18n( "The requested operation could not be completed" );  doc += QString::fromLatin1( "</h1><h2>" );  doc += errorName;  doc += QString::fromLatin1( "</h2>" );  if ( !techName.isNull() ) {    doc += QString::fromLatin1( "<h2>" );    doc += i18n( "Technical Reason: " );    doc += techName;    doc += QString::fromLatin1( "</h2>" );  }  doc += QString::fromLatin1( "<h3>" );  doc += i18n( "Details of the Request:" );  doc += QString::fromLatin1( "</h3><ul><li>" );  doc += i18n( "URL: %1" ).arg( url );  doc += QString::fromLatin1( "</li><li>" );  if ( !protocol.isNull() ) {    // uncomment for 3.1... i18n change    // doc += i18n( "Protocol: %1" ).arg( protocol ).arg( protocol );    doc += QString::fromLatin1( "</li><li>" );  }  doc += i18n( "Date and Time: %1" ).arg( datetime );  doc += QString::fromLatin1( "</li><li>" );  doc += i18n( "Additional Information: %1" ).arg( text );  doc += QString::fromLatin1( "</li></ul><h3>" );  doc += i18n( "Description:" );  doc += QString::fromLatin1( "</h3><p>" );  doc += description;  doc += QString::fromLatin1( "</p>" );  if ( causes.count() ) {    doc += QString::fromLatin1( "<h3>" );    doc += i18n( "Possible Causes:" );    doc += QString::fromLatin1( "</h3><ul><li>" );    doc += causes.join( "</li><li>" );    doc += QString::fromLatin1( "</li></ul>" );  }  if ( solutions.count() ) {    doc += QString::fromLatin1( "<h3>" );    doc += i18n( "Possible Solutions:" );    doc += QString::fromLatin1( "</h3><ul><li>" );    doc += solutions.join( "</li><li>" );    doc += QString::fromLatin1( "</li></ul>" );  }  doc += QString::fromLatin1( "</body></html>" );  write( doc );  end();}void KHTMLPart::slotFinished( KIO::Job * job ){  d->m_job = 0L;  d->m_jobspeed = 0L;  if (job->error())  {    KHTMLPageCache::self()->cancelEntry(d->m_cacheId);    // The following catches errors that occur as a result of HTTP    // to FTP redirections where the FTP URL is a directory. Since    // KIO cannot change a redirection request from GET to LISTDIR,    // we have to take care of it here once we know for sure it is    // a directory...    if (job->error() == KIO::ERR_IS_DIRECTORY)    {      KParts::URLArgs args;      emit d->m_extension->openURLRequest( d->m_workingURL, args );    }    else    {      emit canceled( job->errorString() );      // TODO: what else ?      checkCompleted();      showError( job );    }    return;  }  KIO::TransferJob *tjob = ::qt_cast<KIO::TransferJob*>(job);  if (tjob && tjob->isErrorPage()) {    khtml::RenderPart *renderPart = d->m_frame->m_frame;    if (renderPart) {      HTMLObjectElementImpl* elt = static_cast<HTMLObjectElementImpl *>(renderPart->element());      if (!elt)        return;      elt->renderAlternative();      checkCompleted();     }     if (d->m_bComplete) return;  }  //kdDebug( 6050 ) << "slotFinished" << endl;  KHTMLPageCache::self()->endData(d->m_cacheId);  if (d->m_frame && d->m_frame->m_jscript)    d->m_frame->m_jscript->dataReceived();  if ( d->m_doc && d->m_doc->docLoader()->expireDate() && m_url.protocol().lower().startsWith("http"))      KIO::http_update_cache(m_url, false, d->m_doc->docLoader()->expireDate());  d->m_workingURL = KURL();  if ( d->m_doc && d->m_doc->parsing())    end(); //will emit completed()}void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset ){  // No need to show this for a new page until an error is triggered  if (!parentPart()) {    removeJSErrorExtension();    setSuppressedPopupIndicator( false );    d->m_openableSuppressedPopups = 0;    for ( KHTMLPart* part = d->m_suppressedPopupOriginParts.first(); part; part = d->m_suppressedPopupOriginParts.next() ) {       KJS::Window *w = KJS::Window::retrieveWindow( part );       if (w)           w->forgetSuppressedWindows();    }  }  clear();  d->m_bCleared = false;  d->m_cacheId = 0;  d->m_bComplete = false;  d->m_bLoadEventEmitted = false;  if(url.isValid()) {      QString urlString = url.url();      KHTMLFactory::vLinks()->insert( urlString );      QString urlString2 = url.prettyURL();      if ( urlString != urlString2 ) {          KHTMLFactory::vLinks()->insert( urlString2 );      }  }  // ###  //stopParser();  KParts::URLArgs args( d->m_extension->urlArgs() );  args.xOffset = xOffset;  args.yOffset = yOffset;  d->m_extension->setURLArgs( args );  d->m_pageReferrer = QString::null;  KURL ref(url);  d->m_referrer = ref.protocol().startsWith("http") ? ref.url() : "";  m_url = url;  bool servedAsXHTML = args.serviceType == "application/xhtml+xml";  bool servedAsXML = KMimeType::mimeType(args.serviceType)->is( "text/xml" );  // ### not sure if XHTML documents served as text/xml should use DocumentImpl or HTMLDocumentImpl  i

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -