亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xmlhttprequest.cpp

?? It is WEB browser core module with source code. Very good!
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// -*- c-basic-offset: 2 -*-
/*
 *  This file is part of the KDE libraries
 *  Copyright (C) 2004 Apple Computer, Inc.
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#include "xmlhttprequest.h"

#include "xmlhttprequest.lut.h"
#include "kjs_window.h"
#include "kjs_events.h"

#include "dom/dom_doc.h"
#include "dom/dom_exception.h"
#include "dom/dom_string.h"
#include "misc/loader.h"
#include "html/html_documentimpl.h"
#include "xml/dom2_eventsimpl.h"

#include "khtml_part.h"
#include "khtmlview.h"

#include <kdebug.h>
#include <kio/job.h>
#include <qobject.h>
#include <qregexp.h>

#ifdef APPLE_CHANGES
#include "KWQLoader.h"
#endif

using namespace KJS;
using khtml::Decoder;

////////////////////// XMLHttpRequest Object ////////////////////////

/* Source for XMLHttpRequestProtoTable.
@begin XMLHttpRequestProtoTable 7
  abort			XMLHttpRequest::Abort			DontDelete|Function 0
  getAllResponseHeaders	XMLHttpRequest::GetAllResponseHeaders	DontDelete|Function 0
  getResponseHeader	XMLHttpRequest::GetResponseHeader	DontDelete|Function 1
  open			XMLHttpRequest::Open			DontDelete|Function 5
  overrideMimeType      XMLHttpRequest::OverrideMIMEType        DontDelete|Function 1
  send			XMLHttpRequest::Send			DontDelete|Function 1
  setRequestHeader	XMLHttpRequest::SetRequestHeader	DontDelete|Function 2
@end
*/
DEFINE_PROTOTYPE("XMLHttpRequest",XMLHttpRequestProto)
IMPLEMENT_PROTOFUNC(XMLHttpRequestProtoFunc)
IMPLEMENT_PROTOTYPE(XMLHttpRequestProto,XMLHttpRequestProtoFunc)

namespace KJS {

XMLHttpRequestQObject::XMLHttpRequestQObject(XMLHttpRequest *_jsObject) 
{
  jsObject = _jsObject; 
}

#if APPLE_CHANGES
void XMLHttpRequestQObject::slotData( KIO::Job* job, const char *data, int size )
{
  jsObject->slotData(job, data, size);
}
#else
void XMLHttpRequestQObject::slotData( KIO::Job* job, const QByteArray &data )
{
  jsObject->slotData(job, data);
}
#endif

void XMLHttpRequestQObject::slotFinished( KIO::Job* job )
{
  jsObject->slotFinished(job); 
}

void XMLHttpRequestQObject::slotRedirection( KIO::Job* job, const KURL& url)
{ 
  jsObject->slotRedirection( job, url ); 
}

XMLHttpRequestConstructorImp::XMLHttpRequestConstructorImp(ExecState *, const DOM::Document &d)
    : doc(d)
{
}

bool XMLHttpRequestConstructorImp::implementsConstruct() const
{
  return true;
}

Object XMLHttpRequestConstructorImp::construct(ExecState *exec, const List &)
{
  return Object(new XMLHttpRequest(exec, doc));
}

const ClassInfo XMLHttpRequest::info = { "XMLHttpRequest", 0, &XMLHttpRequestTable, 0 };

/* Source for XMLHttpRequestTable.
@begin XMLHttpRequestTable 7
  readyState		XMLHttpRequest::ReadyState		DontDelete|ReadOnly
  responseText		XMLHttpRequest::ResponseText		DontDelete|ReadOnly
  responseXML		XMLHttpRequest::ResponseXML		DontDelete|ReadOnly
  status		XMLHttpRequest::Status			DontDelete|ReadOnly
  statusText		XMLHttpRequest::StatusText		DontDelete|ReadOnly
  onreadystatechange	XMLHttpRequest::Onreadystatechange	DontDelete
  onload		XMLHttpRequest::Onload			DontDelete
@end
*/

Value XMLHttpRequest::tryGet(ExecState *exec, const Identifier &propertyName) const
{
  return DOMObjectLookupGetValue<XMLHttpRequest,DOMObject>(exec, propertyName, &XMLHttpRequestTable, this);
}

Value XMLHttpRequest::getValueProperty(ExecState *exec, int token) const
{
  switch (token) {
  case ReadyState:
    return Number(state);
  case ResponseText:
    return getStringOrNull(DOM::DOMString(response));
  case ResponseXML:
    if (state != Completed) {
      return Undefined();
    }
    if (!createdDocument) {
      QString mimeType;
      
      if (MIMETypeOverride.isEmpty()) {
        Value header = getResponseHeader("Content-Type");
        if (header.type() == UndefinedType) {
          mimeType = "text/xml";
        } else {
	  mimeType = QStringList::split(";", header.toString(exec).qstring())[0].stripWhiteSpace();
        }
      } else {
        mimeType = MIMETypeOverride;
      }
      
      if (mimeType == "text/xml" || mimeType == "application/xml" || mimeType == "application/xhtml+xml" ||
          mimeType == "text/xsl" || mimeType == "application/rss+xml" || mimeType == "application/atom+xml") {
	responseXML = DOM::Document(doc->implementation()->createDocument());

	DOM::DocumentImpl *docImpl = static_cast<DOM::DocumentImpl *>(responseXML.handle());
	
	docImpl->open();
	docImpl->write(response);
	docImpl->finishParsing();
	docImpl->close();
	typeIsXML = true;
      } else {
	typeIsXML = false;
      }
      createdDocument = true;
    }

    if (!typeIsXML) {
      return Undefined();
    }

    return getDOMNode(exec,responseXML);
  case Status:
    return getStatus();
  case StatusText:
    return getStatusText();
  case Onreadystatechange:
   if (onReadyStateChangeListener && onReadyStateChangeListener->listenerObjImp()) {
     return onReadyStateChangeListener->listenerObj();
   } else {
     return Null();
   }
  case Onload:
   if (onLoadListener && onLoadListener->listenerObjImp()) {
     return onLoadListener->listenerObj();
   } else {
     return Null();
   }
  default:
    kdWarning() << "XMLHttpRequest::getValueProperty unhandled token " << token << endl;
    return Value();
  }
}

void XMLHttpRequest::tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr)
{
  DOMObjectLookupPut<XMLHttpRequest,DOMObject>(exec, propertyName, value, attr, &XMLHttpRequestTable, this );
}

void XMLHttpRequest::putValue(ExecState *exec, int token, const Value& value, int /*attr*/)
{
  switch(token) {
  case Onreadystatechange:
    onReadyStateChangeListener = Window::retrieveActive(exec)->getJSUnprotectedEventListener(value, true);
    if (onReadyStateChangeListener) onReadyStateChangeListener->ref();
    break;
  case Onload:
    onLoadListener = Window::retrieveActive(exec)->getJSUnprotectedEventListener(value, true);
    if (onLoadListener) onLoadListener->ref();
    break;
  default:
    kdWarning() << "HTMLDocument::putValue unhandled token " << token << endl;
  }
}

void XMLHttpRequest::mark()
{
  DOMObject::mark();

  if (onReadyStateChangeListener)
    onReadyStateChangeListener->mark();

  if (onLoadListener)
    onLoadListener->mark();
}


XMLHttpRequest::XMLHttpRequest(ExecState *exec, const DOM::Document &d)
  : DOMObject(XMLHttpRequestProto::self(exec)),
    qObject(new XMLHttpRequestQObject(this)),
    doc(static_cast<DOM::DocumentImpl*>(d.handle())),
    async(true),
    job(0),
    state(Uninitialized),
    onReadyStateChangeListener(0),
    onLoadListener(0),
    decoder(0),
    createdDocument(false),
    aborted(false)
{
}

XMLHttpRequest::~XMLHttpRequest()
{
  delete qObject;
  if (decoder) {
    decoder->deref();
  }
}

void XMLHttpRequest::changeState(XMLHttpRequestState newState)
{
  if (state != newState) {
    state = newState;
    
    if (onReadyStateChangeListener != 0 && doc->part()) {
      DOM::Event ev = doc->part()->document().createEvent("HTMLEvents");
      ev.initEvent("readystatechange", true, true);
      onReadyStateChangeListener->handleEvent(ev, true);
    }
    
    if (state == Completed && onLoadListener != 0 && doc->part()) {
      DOM::Event ev = doc->part()->document().createEvent("HTMLEvents");
      ev.initEvent("load", true, true);
      onLoadListener->handleEvent(ev, true);
    }
  }
}

bool XMLHttpRequest::urlMatchesDocumentDomain(const KURL& _url) const
{
  KURL documentURL(doc->URL());

  // a local file can load anything
  if (documentURL.protocol().lower() == "file") {
    return true;
  }

  // but a remote document can only load from the same port on the server
  if (documentURL.protocol().lower() == _url.protocol().lower() &&
      documentURL.host().lower() == _url.host().lower() &&
      documentURL.port() == _url.port()) {
    return true;
  }

  return false;
}

void XMLHttpRequest::open(const QString& _method, const KURL& _url, bool _async)
{
  abort();
  aborted = false;

  // clear stuff from possible previous load
  requestHeaders = QString();
  responseHeaders = QString();
  response = QString();
  createdDocument = false;
  responseXML = DOM::Document();

  changeState(Uninitialized);

  if (aborted) {
    return;
  }

  if (!urlMatchesDocumentDomain(_url)) {
    return;
  }

  
  method = _method;
  url = _url;
  async = _async;

  changeState(Loading);
}

void XMLHttpRequest::send(const QString& _body)
{
  aborted = false;

#if !APPLE_CHANGES
  if (!async) {
    return;
  }
#endif

  if (method.lower() == "post" && (url.protocol().lower() == "http" || url.protocol().lower() == "https") ) {
      // FIXME: determine post encoding correctly by looking in headers for charset
      job = KIO::http_post( url, _body.utf8(), false );
  }
  else
  {
     job = KIO::get( url, false, false );
  }
  if (requestHeaders.length() > 0) {
    job->addMetaData("customHTTPHeader", requestHeaders);
  }

#if APPLE_CHANGES
  if (!async) {
    QByteArray data;
    KURL finalURL;
    QString headers;

    data = KWQServeSynchronousRequest(khtml::Cache::loader(), doc->docLoader(), job, finalURL, headers);
    job = 0;
    processSyncLoadResults(data, finalURL, headers);
    
    return;
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区不卡| 国产婷婷色一区二区三区四区| 欧美三级日韩三级| 欧美大胆人体bbbb| 亚洲一区二区视频| 国产精品一卡二卡在线观看| 欧美剧情片在线观看| 国产精品免费视频观看| 久久99精品网久久| 欧美私人免费视频| 亚洲日本在线天堂| 成人18视频日本| 久久久久久久综合色一本| 丝袜美腿高跟呻吟高潮一区| 99国产精品久久久久久久久久| 欧美va亚洲va香蕉在线 | 日本不卡不码高清免费观看| 国产成人精品影视| 欧美一区二区不卡视频| 亚洲男人电影天堂| 成人午夜电影网站| 久久久久99精品一区| 麻豆精品国产传媒mv男同| 欧美丝袜丝nylons| 亚洲伊人伊色伊影伊综合网| 在线中文字幕一区二区| 亚洲欧美另类小说| 色国产精品一区在线观看| 国产精品久久久久久久久久免费看 | 日韩福利电影在线观看| 欧美日韩亚洲国产综合| 亚洲一区二区三区四区五区中文| 99国产精品久| 亚洲激情自拍视频| 91久久免费观看| 亚洲资源在线观看| 色8久久人人97超碰香蕉987| 国产91丝袜在线播放0| 精品国产乱码久久久久久蜜臀| 日韩精品免费专区| 欧美一区二区黄| 蜜桃久久久久久| 亚洲精品在线观看网站| 精品一区二区久久| 久久久综合激的五月天| 国产福利一区在线观看| 国产精品美女一区二区三区 | 久久综合久色欧美综合狠狠| 激情综合网最新| 久久久久久久av麻豆果冻| www.亚洲在线| 亚洲午夜成aⅴ人片| 日韩欧美一二三区| 成人午夜视频在线观看| 亚洲精选在线视频| 欧美一区二区视频在线观看 | 欧洲一区二区三区在线| 日韩精品乱码免费| 2024国产精品| 色综合咪咪久久| 美腿丝袜在线亚洲一区| 中文字幕制服丝袜成人av| 欧美日韩一区二区在线观看视频| 男人操女人的视频在线观看欧美| 国产欧美日本一区视频| 欧洲亚洲国产日韩| 国产精品911| 亚洲国产欧美在线人成| 久久综合999| 在线看日韩精品电影| 久久99精品久久久久久动态图| 国产精品你懂的| 欧美不卡一二三| 91美女片黄在线观看91美女| 精品在线观看视频| 亚洲你懂的在线视频| 精品日产卡一卡二卡麻豆| 在线免费av一区| 高清国产一区二区三区| 日本欧美加勒比视频| 亚洲男同1069视频| 久久久青草青青国产亚洲免观| 欧美在线免费播放| a亚洲天堂av| 国产一区二区在线电影| 天堂va蜜桃一区二区三区漫画版| 中文字幕高清不卡| 精品国产区一区| 欧美日韩国产系列| 色婷婷综合激情| 99久久精品情趣| 国产麻豆日韩欧美久久| 久久国产精品99久久人人澡| 亚洲chinese男男1069| 亚洲人精品午夜| 国产精品视频第一区| 精品福利一区二区三区 | 国产精品午夜在线| 精品成人在线观看| 欧美高清性hdvideosex| 91国产成人在线| 91老师国产黑色丝袜在线| 国产成人av影院| 日韩黄色小视频| 亚洲日本韩国一区| 中文成人综合网| 欧美韩国日本不卡| 精品久久久久99| 欧美成人精品福利| 精品国产乱码久久久久久1区2区 | 日韩二区在线观看| 午夜国产精品一区| 无码av免费一区二区三区试看| 一区二区三区在线播放| 一区二区在线观看免费| 亚洲乱码国产乱码精品精的特点 | 国产三级一区二区| 欧美经典一区二区三区| 中文字幕第一页久久| 中文久久乱码一区二区| 欧美一区二区三区在线| 欧美视频日韩视频在线观看| 在线视频观看一区| 欧美日韩国产在线观看| 欧美精品第一页| 欧美mv和日韩mv的网站| 久久久久国产精品人| 中文字幕一区二区日韩精品绯色| 欧美国产成人精品| 国产午夜精品久久久久久免费视| 欧美激情在线观看视频免费| 国产精品美女www爽爽爽| 亚洲欧美另类图片小说| 日韩精品高清不卡| 精品无人区卡一卡二卡三乱码免费卡| 极品少妇xxxx精品少妇偷拍| 成人黄色软件下载| 欧美自拍丝袜亚洲| 日韩欧美在线观看一区二区三区| 精品久久国产97色综合| 国产精品动漫网站| 午夜精品久久久久久久蜜桃app| 男人的天堂久久精品| 成人免费看片app下载| 一本久久综合亚洲鲁鲁五月天| 欧美日韩一二三区| 久久婷婷色综合| 亚洲美女一区二区三区| 精品一区在线看| 99re热视频这里只精品| 5858s免费视频成人| 国产精品久久久久久久岛一牛影视 | 91在线播放网址| 在线综合+亚洲+欧美中文字幕| 国产日韩欧美一区二区三区综合 | 国产精品美女久久久久高潮| 亚洲精品中文在线观看| 久久精品久久久精品美女| 成人av免费观看| 69堂精品视频| 国产精品网友自拍| 日韩电影在线观看电影| youjizz久久| 久久久亚洲国产美女国产盗摄 | 美女视频黄免费的久久 | 一本一本久久a久久精品综合麻豆| 91精品综合久久久久久| 亚洲视频一区二区免费在线观看| 秋霞成人午夜伦在线观看| 91色婷婷久久久久合中文| 久久亚洲二区三区| 午夜成人免费视频| 99国产精品久久久久久久久久久 | 成人黄色在线看| 久久亚洲综合色| 亚洲国产一区二区三区青草影视| 国产69精品久久99不卡| 日韩一区二区视频在线观看| 一区二区三区成人在线视频| 国产精品自拍网站| 精品免费视频一区二区| 日韩激情在线观看| 欧美性生交片4| 亚洲一区二区在线观看视频| av一二三不卡影片| 欧美激情自拍偷拍| 国产精品99久| 久久亚洲精品小早川怜子| 伦理电影国产精品| 777xxx欧美| 日本亚洲三级在线| 欧美剧在线免费观看网站| 亚洲gay无套男同| 欧美日本免费一区二区三区| 亚洲影视在线播放| 欧美午夜精品久久久久久孕妇| 亚洲精品第1页| 欧美性猛交xxxx黑人交| 亚洲午夜精品17c| 欧美日韩成人在线一区|