• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    CEF應(yīng)用與交互研究

    2021-04-20 06:34:22付莎
    電子技術(shù)與軟件工程 2021年3期
    關(guān)鍵詞:調(diào)用瀏覽器進程

    付莎

    (云南省少數(shù)民族語文指導工作委員會辦公室 云南省昆明市 650021)

    傳統(tǒng)軟件開發(fā)C/S、B/S 模式各有利弊。C/S 模式可控性、定制性高,但技術(shù)門檻高、開發(fā)周期長、綜合成本大。B/S 模式技術(shù)門檻稍低,開發(fā)周期相對較短,構(gòu)建UI 交互高效快捷。但B/S 模式也因受限瀏覽器限制,在一些需要和操作系統(tǒng)、硬件設(shè)備等底層進行數(shù)據(jù)交互時近乎無能為力。復雜UI 交互如使用C/S 模式則需要花費大量時間精力且未必能達到B/S 模式效果。

    CEF(Chromium Embedded Framework)是一套基于Google Chromium 的BSD 協(xié)議開源跨平臺項目。通過CEF 提供的接口,第三方應(yīng)用程序可方便、高效的將Google Chromium 集成進自己的項目[3]。

    通過CEF 的嵌入使用,應(yīng)用程序可使用現(xiàn)代化的Web 技術(shù)快速、高效的構(gòu)建應(yīng)用程序UI 交互。而少部分其他需要和操作系統(tǒng)、第三方API 或硬件設(shè)備等底層進行交互的功能模塊又可全部交由原生軟件完成。并通過CEF 相關(guān)接口和Web UI 進行數(shù)據(jù)交互。

    使用CEF 可使應(yīng)用系統(tǒng)構(gòu)建為一種混合模式。大量的UI 交互使用Web 技術(shù)完成。而不可以使用Web 技術(shù)完成的或使用Web 構(gòu)建較為復雜的以及使用Web 效率低下的部分則可使用原生C++編寫完成??沙浞肿畲蠡疌/S 和B/S 模式的各自優(yōu)勢。使軟件系統(tǒng)開發(fā)效率高效、而成本低廉。

    最近幾年隨著Google Chromium 項目和計算機硬件的不斷發(fā)展,混合模式的開發(fā)優(yōu)勢逐漸凸顯。獲得了大量行業(yè)龍頭企業(yè)的認可與應(yīng)用。例如騰訊QQ、微信PC 版、網(wǎng)易云音樂、阿里旺旺、阿里釘釘?shù)榷际褂昧薈EF 技術(shù)或基于CEF 的深度訂制技術(shù)。

    1 CEF簡介

    CEF 是一套基于Google Chromium[6]項目的開源嵌入式框架。隨著Google Chromium 項目的推進,其一開始使用的WebKit 內(nèi)核被新的Blink 內(nèi)核取代[1],并推出了全新的Chromium content API。新版增強了對HTML5 和GPU 硬件加速的支持,機制更現(xiàn)代化,極大改進了瀏覽器性能和穩(wěn)定性。但隨之而來的是原有底層結(jié)構(gòu)大幅改動,因此CEF 也隨content API 推出了全新版本:CEF3。原版本改名為CEF1。因此現(xiàn)今一般CEF 特指CEF3 版本。本文所述也特指CEF3 版本[3]。

    Google Chromium 采用C++語言編寫。由于功能強大與技術(shù)先進,代碼量極其龐大和復雜,擴展及二次開發(fā)極為困難[5]。直接使用Chromium 源碼進行集成使用極為復雜,學習與使用成本高昂,一般開發(fā)人員掌握、使用都非常困難[4]。CEF 使用C++語言對Chromium 公共接口進行了重新封裝。對大量的 Chromium 接口進行了默認實現(xiàn),隔離了Chromium 極為龐大的源碼與具體實現(xiàn)。提供了新的易于使用的對外接口。第三方嵌入時只需使用CEF 接口提供的默認實現(xiàn),并通過少量的代碼編寫即可將 Chromium 嵌入第三方應(yīng)用使用。

    2 CEF構(gòu)架與主要對外接口

    CEF 是多進程模型。在CEF 構(gòu)架中定義了Broswer 和Render兩種不同類型的進程。Browser 進程負責UI 部分的窗口管理、界面繪制和相關(guān)網(wǎng)絡(luò)傳輸。Render 進程負責Blink 內(nèi)核的渲染和JavaScript 執(zhí)行。嵌入使用時主應(yīng)用程序的一些應(yīng)用邏輯例如:JavaScript 綁定、DOM 節(jié)點的訪問等也在Render 進行中執(zhí)行。默認的進程模型中,會為每個頁面創(chuàng)建一個新的Render 進程。進程之間通過IPC 進行通信。Browser 和Render 進程可以通過發(fā)送異步消息進行雙向通信[2]。

    CEF 提供了libcef_dll_wrapper 工程導出了相關(guān)C++接口。使用時只需使用此包裝接口即可快速集成CEF 到第三方主應(yīng)用程序,從而隔絕了Chromium 的復雜接口。以下CEF 主要C++接口均來自libcef_dll_wrapper 工程包的導出。

    CefBrowser 對象代表當前的瀏覽器窗口。通過CefBrowser 對象可以獲取當前Browser 的各項信息,并對Browser 進行特定操作。例如操作Browser 打開頁面、回退、強制刷新當前頁面等。

    CefFrame 對象代表Broswer 下的Frames。每個CefBrowser 對象包含一個主CefFrame 對象,主CefFrame 對象代表Web 頁面的頂層frame。Browser 對象下可以包含零個或多個的CefFrame 對象,分別代表不同的子Frame。獲取Frame 對象后可對Frame 進行特定的操作。例如當前Frame 下的源碼獲取、DOM 獲取、Frame 內(nèi)容拷貝以及當前Frame 執(zhí)行JavaScript 語句等。

    CefClient 接口提供訪問瀏覽器實例的回調(diào)接口。瀏覽器實例的相關(guān)各種控制:例如自定義處理瀏覽器的生命周期、右鍵菜單、下載處理、對話框、通知顯示、拖曳事件、焦點事件、鍵盤事件等,都必須通過CefClient 接口相應(yīng)方法指定處理handler。一個CefClient 對象實現(xiàn)可以在任意數(shù)量的Browser 進程中共享。

    CefBrowserProcessHandler 接口對應(yīng)Browser 進程的回調(diào)??捎糜谠贐rowser 創(chuàng)建時進行一些特定的初始化。

    CefRenderProcessHandler 接口對應(yīng)Render 進程的回調(diào)。自定義的一些應(yīng)用邏輯:例如JavaScript 綁定、擴展等需要在此接口實現(xiàn)。

    CefApp 接口提供訪問進程相關(guān)的回調(diào)。包括代碼化設(shè)置啟動參數(shù)、自定義請求頭部、設(shè)置Browser 和Render 進程處理Handler。一些特殊的設(shè)置,例如開始攝像頭支持、允許使用Flash、關(guān)閉同源策略、允許訪問本機文件等都可在CefApp 提供的接口中設(shè)置。初始化CEF 函數(shù)CefInitialize 需提供此接口的實例。必須實現(xiàn)。

    CefLifeSpanHandler 接口提供管理Browser 生命周期回調(diào)。

    CefV8Handler 用于實現(xiàn)自注冊的JS 函數(shù)處理邏輯。當我們在CefRenderProcessHandler 接口上注冊了自定義函數(shù)或?qū)ο螅赪eb端執(zhí)行相應(yīng)的JS 代碼時,將會調(diào)用本接口的Execute 方法。

    CefSettings 對象用于定義全局的CEF 配置項。例如是否使用Cookie 緩存、日志輸出、定義當前語言、遠程調(diào)試端口等。

    CefString CEF 由于跨平臺和不同運行時編譯等原因提供了統(tǒng)一的字符串管理,提供統(tǒng)一的內(nèi)存堆管理、支持UTF8,UTF16 等字符串類型,為CEF 字符串定義了自己的數(shù)據(jù)結(jié)構(gòu)。在使用CEF 的過程中所有使用字符串的地方都需要使用CefString 結(jié)構(gòu)。

    CefInitialize 函數(shù)用于在主應(yīng)用程序中初始化CEF Broswer 進程。

    CefShutdown 函數(shù)用于在主應(yīng)用程序中關(guān)閉使CEF 停止工作。

    3 宿主應(yīng)用程序結(jié)構(gòu)

    使用CEF 時,宿主應(yīng)用程序據(jù)結(jié)構(gòu)應(yīng)按下述步驟構(gòu)建才能使CEF 正常工作,主要有以下四個步驟[2]:

    (1)提供CefApp 的實現(xiàn),用于處理CEF 所需的進程相關(guān)的回調(diào)。

    定義CCefClientApp 類。繼承于CefApp、CefBrowserProcess Handler 以及CefRenderProcessHandler。實現(xiàn)OnBeforeCommandLine Processing、GetBrowserProcessHandler 與GetRenderProcessHandler三個主要回調(diào)。主要用于參數(shù)設(shè)置。定義Browser 與Render 進程回調(diào)處理。

    (2)提供CefClient 的實現(xiàn),用于處理CEF 所需的Browser 實例相關(guān)的回調(diào)。

    定義CCefClientHandler 類。繼承于CefClient 與CefLifeSpan Handler。實現(xiàn)GetDisplayHandler、GetLifeSpanHandler、GetLoad Handler、OnProcessMessageReceived 以及OnAfterCreated、DoClose、OnBeforeClose。定義Brower 實例的各相關(guān)回調(diào)。

    (3)在CefClient 實現(xiàn)中使用CEF 提供的CefBrowserHost::CreateBrowser()函數(shù)創(chuàng)建一個Browser 實例。

    在CCefClientHandler 類中定義CreateBrowser 函數(shù)。使用靜態(tài)函數(shù)CefBrowserHost::CreateBrowser()創(chuàng)建Browser 實例。當宿主應(yīng)用程序窗口創(chuàng)建時,調(diào)用CreateBrowser 函數(shù)創(chuàng)建Browser 實例窗口。

    (4)使用CefInitialize 初始化CEF。

    在宿主應(yīng)用程序入口處,使用CefInitialize 函數(shù),傳入上述定義的CCefClientApp 對象作為啟動參數(shù)啟動CEF。

    在實現(xiàn)上述四個步驟的相關(guān)定義后,即可在宿主應(yīng)用程序中嵌入CEF。由于使用了CEF 的預制默認實現(xiàn),上述大部分實現(xiàn)函數(shù)只需直接return this;即可啟動CEF。實現(xiàn)了方便、簡單的嵌入使用。

    4 CEF下C++與JavaScript 相互交互

    CEF 的嵌入使用最為關(guān)鍵的一項技術(shù)應(yīng)用即為構(gòu)建的Web 頁面怎么樣和原生C++程序相互交互。只有C++與JS 語言之間能實現(xiàn)數(shù)據(jù)相互交互、協(xié)助運行,本文所述的混合模式、CEF 的嵌入使用才能發(fā)揮最大的作用。

    C++調(diào)用JavaScript:

    C++調(diào)用執(zhí)行JavaScript 相對簡單。通過CefBrowser 獲取包含的CefFrame 對象,執(zhí)行CefFrame 對象方法ExecuteJavaScript()函數(shù)即可實現(xiàn)C++調(diào)用JavaScript。該函數(shù)在Browser 與Render 進程均可調(diào)用。需要注意的是ExecuteJavaScript 不支持JS 處理結(jié)果返回[7]。

    JavaScript 調(diào)用C++:

    (1)CEF 窗口綁定。允許C++將變量、對象或函數(shù)附加到一個Frame 的window 對象上,供JavaScript 端調(diào)用。窗口綁定需在CefRenderProcessHandler::OnContextCreated() 方法中實現(xiàn)并使用CefV8Value::SetValue 函數(shù)添加到上下文中,即上述CCefClientApp類中實現(xiàn)OnContextCreated 方法??舍槍Σ煌腇rame 設(shè)置同一個對象不同的值。

    (2)CEF 擴展。與窗口綁定類似,區(qū)別是擴展將變量、對象或函數(shù)附加到特定對象上,非窗口綁定的window 對象。擴展將加載到所有Frame 對象上,且不能修改其值。擴展需在Ce fRenderProcessHandler::OnWebKitInitialized() 方法中實現(xiàn),即上述CCefClientApp 類中實現(xiàn)OnWebKitInitialized 方法,并使用CefRegisterExtension 函數(shù)注冊。

    當JS 需要調(diào)用C++函數(shù)代碼時,一般處理方式為:首先將函數(shù)在CefV8Handler::Execute()方法中實現(xiàn),然后使用以上兩種方式之一注冊對應(yīng)函數(shù)。當JS 調(diào)用相應(yīng)函數(shù)時,將會觸發(fā)CefV8Handler::Execute()方法[8]。

    5 Windows下CEF應(yīng)用實例

    本實例將演示使用CEF 嵌入式瀏覽器技術(shù)支持使用第三方廠家提供的二代身份證讀卡器SDK 讀取居民身份證信息。通過Web UI 上JS 調(diào)用宿主C++代碼操作身份證讀卡器獲取相應(yīng)信息。通過本實例可充分展示CEF 下JS 與原生C++代碼的相互交互過程。

    本實例使用Windows 下Visual Studio2015 版本構(gòu)架MFC Dialog 應(yīng)用項目,使用CEF3 3325Chromium 65 版本構(gòu)建。將展示兩種方式:同步與異步JS 調(diào)用原生C++代碼。本示例主要展示CEF 使用中最核心的JS 與C++交互部分,其他部分如宿主應(yīng)用程序構(gòu)數(shù)據(jù)結(jié)構(gòu)、類定義等不再展示,只列出核心代碼。將采用最小化構(gòu)建。

    MFC 工程中初始化CEF,并創(chuàng)建Browser 窗口進程。

    (1)App::InitInstance()函數(shù)CEF 初始化。

    (2)Dlg::OnInitDialog()函數(shù)中初始化Browser 窗口進程。

    (3)Dlg::OnClose()函數(shù)中關(guān)閉Browser 進行,并銷毀CEF

    (4)使用C++封裝讀卡器SDK 相關(guān)函數(shù),創(chuàng)建讀取身份證信息函數(shù)ReadIDCardInfo(wstring &info);

    5.1 同步版本

    JS 端調(diào)用C++函數(shù),并在Render 進程處理返回。

    (1)派生MyCefApp、MyCefClient 與MyCefV8Handler 類,實現(xiàn)CEF CefApp、CefRenderProcessHandler、CefClient、CefLife SpanHandler、CefV8Handler 等接口。

    (2)實現(xiàn)CefRenderProcessHandler::OnContextCreated(),使用CEF Window 綁定,建并綁定JS 函數(shù)ReadIDCard 至瀏覽器window對象。

    (3)實現(xiàn)CefV8Handler::Execute()。當Web 端JS 代碼中調(diào)用ReadIDCard 函數(shù)時,CEF 將會觸發(fā)Execute()。在Execute()中將調(diào)C++原生ReadIDCardInfo 函數(shù)獲取居民身份證信息并返回給JS。

    詳細步驟如下:

    (1)定義MyCefApp 類,實現(xiàn)CefRenderProcessHandler 接口中的OnContextCreated。并在OnContextCreated 函數(shù)中定義身份證信息讀取函數(shù)ReadIDCard 供Web 端JS 調(diào)用。

    (2)定義MyCefClient 類,繼承CefClient 與CefLifeSpan Handler。CefClient 提供訪問Browser 實例的回調(diào)接口。CefLifeSpan Handler 是與之相關(guān)的Browser 實例相關(guān)生存周期回調(diào)接口,管理Brower 生存周期。

    (3)定義MyCefV8Handler 類,繼承CefV8Handler。CefV8 Handler::Execute 提供JS 窗口綁定和擴展的函數(shù)回調(diào)。實現(xiàn)Execute函數(shù),當Web 端JS 調(diào)用ReadIDCard 函數(shù)時將回調(diào)此函數(shù)。

    5.2 異步調(diào)用

    CEF 提供了一個通用的消息路由實現(xiàn)CefMessageRouter,用于在Render 進程中執(zhí)行的JS 和在Brower 進程中執(zhí)行的C++之間傳遞異步消息。使用此消息路由即可實現(xiàn)我們所希望的JS 異步調(diào)用。

    (1)建立全局CefMessageRouterConfig 類實例。并在CEF 初始化時定義CefMessageRouterConfig 中定義在Web 端JS 需調(diào)用函數(shù)。

    CefMessageRouterConfig g_messageRouterConfig;

    messageRouterConfig.js_query_function=“cefQuery”;

    messageRouterConfig.js_cancel_function=“cefQueryCancel”

    (2)在Render 進程處理類MyCefApp 中添加CefMessage RouterRendererSide 成員變量,實現(xiàn)Render 一側(cè)消息路由。

    m_renderer_side_router=CefMessageRouterRendererSide::Create(g_messageRouterConfig);

    (3)在MyCefApp 中分別實現(xiàn)并調(diào)用CefMessageRouter RendererSide 預留的OnContextCreated、OnProcessMessageReceived與OnProcessMessageReceived 三個同名接口,使用默認實現(xiàn)即可。

    (4)在Browser 進程處理類MyCefClient 中添加CefMessage RouterBrowserSide 成員變量,用于實現(xiàn)Browser 一側(cè)消息路由。

    m_browser_side_router=CefMessageRouterBrowserSide::Create(g_messageRouterConfig);

    (5)在MyCefClient 中分別實現(xiàn)并調(diào)用CefMessageRouter BrowserSide 預留 的OnProcessMessageReceived、OnBeforeClose、OnBeforeBrowse 與OnRenderProcessTerminated 四個同名接口,使用默認實現(xiàn)即可。

    (6)實現(xiàn)JSHandler 類,繼承自CefMessageRouterBrowserSide::Handler 接口,實現(xiàn)OnQuery 與OnQueryCanceled 函數(shù),用于處理JS 端調(diào)用C++而被傳遞過來的消息。

    (7)在MyCefClient 類中調(diào)用CefMessageRouterBrowserSide成員變量AddHandler 函數(shù),將上述(6)步驟實現(xiàn)的接口實例添加到消息路由中。

    JSHandler m_jsHandler;

    ...

    m_browser_side_router->AddHandler(&m_jsHandler,true);

    通過上述步驟,當在Web 端調(diào)用JS 函數(shù)window.cefQuer(‘ReadIDCard’,...)時,Rander 進程將首先捕獲調(diào)動,并通過消息路由路由至Browser 進程一側(cè),最終將調(diào)用交由CefMessageRouter BrowserSide::Handler 接口實現(xiàn)二代身份證信息的讀取功能,并在完成后異步將數(shù)據(jù)傳遞給Web 端。

    6 總結(jié)

    通過上述兩例同步與異步應(yīng)用實例,展示了嵌入式使用CEF時Web 端JS 與宿主端C++的相互調(diào)用與數(shù)據(jù)傳遞過程。通過實例可見CEF為我們隔離了大量的Chromium接口初始化以及實現(xiàn)過程,并提供了豐富的默認實現(xiàn),第三方應(yīng)用程序只需定義少量關(guān)鍵業(yè)務(wù)核心代碼即可將CEF 嵌入到第三方應(yīng)用程序中使用。為我們開發(fā)混合應(yīng)用實例提供了極大的便利。

    猜你喜歡
    調(diào)用瀏覽器進程
    核電項目物項調(diào)用管理的應(yīng)用研究
    債券市場對外開放的進程與展望
    中國外匯(2019年20期)2019-11-25 09:54:58
    反瀏覽器指紋追蹤
    電子制作(2019年10期)2019-06-17 11:45:14
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    環(huán)球瀏覽器
    再見,那些年我們嘲笑過的IE瀏覽器
    英語學習(2015年6期)2016-01-30 00:37:23
    社會進程中的新聞學探尋
    民主與科學(2014年3期)2014-02-28 11:23:03
    我國高等教育改革進程與反思
    Linux僵死進程的產(chǎn)生與避免
    国产精品 国内视频| 精品国产国语对白av| 嫩草影院精品99| 正在播放国产对白刺激| 欧美日韩视频精品一区| 亚洲精华国产精华精| videosex国产| 国产成人精品久久二区二区免费| 亚洲精华国产精华精| 韩国精品一区二区三区| 一边摸一边做爽爽视频免费| 美女 人体艺术 gogo| 色播在线永久视频| cao死你这个sao货| av中文乱码字幕在线| 黄片播放在线免费| √禁漫天堂资源中文www| 一级毛片精品| 亚洲色图 男人天堂 中文字幕| 男女下面插进去视频免费观看| 中文字幕人妻丝袜一区二区| 97碰自拍视频| 黄色 视频免费看| 久热爱精品视频在线9| 黄片播放在线免费| 老鸭窝网址在线观看| 天天躁狠狠躁夜夜躁狠狠躁| 久9热在线精品视频| 精品一区二区三卡| 日韩精品青青久久久久久| 国产精品亚洲一级av第二区| netflix在线观看网站| 亚洲,欧美精品.| 在线av久久热| 国产高清视频在线播放一区| 狠狠狠狠99中文字幕| 国产亚洲欧美精品永久| 亚洲精品中文字幕在线视频| 最近最新中文字幕大全免费视频| 在线播放国产精品三级| 男女午夜视频在线观看| 无人区码免费观看不卡| 黑人巨大精品欧美一区二区mp4| 美女高潮到喷水免费观看| 亚洲国产中文字幕在线视频| 大型黄色视频在线免费观看| 国产精品av久久久久免费| av国产精品久久久久影院| 男女做爰动态图高潮gif福利片 | 欧美日韩福利视频一区二区| 九色亚洲精品在线播放| 成在线人永久免费视频| 黄色a级毛片大全视频| 久久人人97超碰香蕉20202| a级毛片在线看网站| 亚洲在线自拍视频| 色在线成人网| tocl精华| 国产乱人伦免费视频| 女性生殖器流出的白浆| 欧美大码av| 老汉色∧v一级毛片| 国产成人精品无人区| 中文字幕精品免费在线观看视频| 成年人黄色毛片网站| 黑人巨大精品欧美一区二区蜜桃| 久久性视频一级片| 亚洲专区国产一区二区| 黄色视频,在线免费观看| 亚洲色图综合在线观看| 在线永久观看黄色视频| 一级片'在线观看视频| 久久久久久免费高清国产稀缺| 琪琪午夜伦伦电影理论片6080| 制服人妻中文乱码| 亚洲成人国产一区在线观看| www国产在线视频色| 国产欧美日韩一区二区三区在线| 多毛熟女@视频| 午夜精品久久久久久毛片777| 国产亚洲欧美在线一区二区| 三上悠亚av全集在线观看| 日日夜夜操网爽| 交换朋友夫妻互换小说| 国产视频一区二区在线看| 高清毛片免费观看视频网站 | 人人澡人人妻人| 男人舔女人下体高潮全视频| www.精华液| 久久精品aⅴ一区二区三区四区| 操美女的视频在线观看| 国产精品国产av在线观看| 亚洲va日本ⅴa欧美va伊人久久| 亚洲人成伊人成综合网2020| 十八禁网站免费在线| 97人妻天天添夜夜摸| 极品教师在线免费播放| 老司机深夜福利视频在线观看| 久久中文字幕一级| 亚洲一区二区三区不卡视频| 国产精品自产拍在线观看55亚洲| 精品国产国语对白av| 亚洲人成77777在线视频| 久久精品国产综合久久久| 精品久久久久久久毛片微露脸| 在线国产一区二区在线| 91麻豆精品激情在线观看国产 | 老司机福利观看| 欧美日本亚洲视频在线播放| 在线av久久热| 男人操女人黄网站| 国产三级黄色录像| 欧美大码av| 亚洲精品美女久久久久99蜜臀| 成人精品一区二区免费| 黄色视频不卡| 中文字幕av电影在线播放| 久久久久久大精品| 午夜日韩欧美国产| 久久久久久久午夜电影 | 国产成人精品久久二区二区免费| 欧美在线黄色| 免费久久久久久久精品成人欧美视频| 亚洲片人在线观看| 91大片在线观看| 99国产精品免费福利视频| 夜夜夜夜夜久久久久| 亚洲第一av免费看| 欧美黄色淫秽网站| 国产蜜桃级精品一区二区三区| 欧美人与性动交α欧美精品济南到| 亚洲一区二区三区欧美精品| 满18在线观看网站| 国产熟女午夜一区二区三区| 久久九九热精品免费| 国产熟女午夜一区二区三区| 神马国产精品三级电影在线观看 | 日韩人妻精品一区2区三区| 精品国产乱码久久久久久男人| 激情在线观看视频在线高清| 视频在线观看一区二区三区| 少妇 在线观看| 亚洲五月婷婷丁香| 人人妻,人人澡人人爽秒播| www国产在线视频色| 两个人免费观看高清视频| 欧美最黄视频在线播放免费 | 又紧又爽又黄一区二区| 中文字幕人妻熟女乱码| 国产又色又爽无遮挡免费看| 欧美 亚洲 国产 日韩一| 国产精品亚洲av一区麻豆| 亚洲av电影在线进入| 欧美日韩亚洲高清精品| 国产激情欧美一区二区| 真人一进一出gif抽搐免费| 91精品三级在线观看| 亚洲中文字幕日韩| 精品久久久久久久久久免费视频 | 久久午夜亚洲精品久久| 亚洲伊人色综图| 99久久综合精品五月天人人| 婷婷六月久久综合丁香| 午夜免费鲁丝| 黄频高清免费视频| 亚洲一区中文字幕在线| 19禁男女啪啪无遮挡网站| 日韩免费高清中文字幕av| 久久久久国内视频| 悠悠久久av| www国产在线视频色| 午夜福利,免费看| 黄色毛片三级朝国网站| 国产伦人伦偷精品视频| 亚洲欧美精品综合一区二区三区| 老司机午夜十八禁免费视频| 久99久视频精品免费| 99精品欧美一区二区三区四区| 三上悠亚av全集在线观看| 老司机亚洲免费影院| 怎么达到女性高潮| 久久中文字幕一级| 超碰97精品在线观看| 欧美中文日本在线观看视频| av有码第一页| 国产精品98久久久久久宅男小说| 一级,二级,三级黄色视频| 亚洲专区中文字幕在线| 99久久综合精品五月天人人| 国产在线观看jvid| 日韩 欧美 亚洲 中文字幕| 欧美日本中文国产一区发布| 亚洲七黄色美女视频| 国产熟女午夜一区二区三区| 欧美中文综合在线视频| 久久伊人香网站| 国产区一区二久久| 热99re8久久精品国产| 国产精品成人在线| 夜夜爽天天搞| 两性夫妻黄色片| 丝袜人妻中文字幕| 久久久久久亚洲精品国产蜜桃av| 操美女的视频在线观看| 欧美丝袜亚洲另类 | 久久人妻av系列| 亚洲免费av在线视频| 99久久综合精品五月天人人| 正在播放国产对白刺激| 久久精品91蜜桃| 男女床上黄色一级片免费看| 老鸭窝网址在线观看| 91国产中文字幕| 日韩有码中文字幕| 日本撒尿小便嘘嘘汇集6| 亚洲男人的天堂狠狠| www国产在线视频色| 视频区图区小说| 国产色视频综合| 老司机午夜十八禁免费视频| 欧美激情 高清一区二区三区| 深夜精品福利| 琪琪午夜伦伦电影理论片6080| 啦啦啦 在线观看视频| 露出奶头的视频| 老鸭窝网址在线观看| 香蕉国产在线看| 日韩有码中文字幕| 国产成人av教育| 18禁黄网站禁片午夜丰满| 欧美日韩亚洲国产一区二区在线观看| 国产aⅴ精品一区二区三区波| 中文字幕精品免费在线观看视频| 老司机在亚洲福利影院| 在线观看www视频免费| 中文亚洲av片在线观看爽| 免费观看精品视频网站| 男女下面插进去视频免费观看| 一级,二级,三级黄色视频| 国产精品自产拍在线观看55亚洲| 99国产精品免费福利视频| 亚洲精品国产精品久久久不卡| videosex国产| 极品人妻少妇av视频| 久久精品国产综合久久久| 女人高潮潮喷娇喘18禁视频| 国产三级黄色录像| 97超级碰碰碰精品色视频在线观看| 99国产精品99久久久久| 精品电影一区二区在线| 啦啦啦 在线观看视频| 老司机午夜十八禁免费视频| 亚洲va日本ⅴa欧美va伊人久久| 欧美在线黄色| 亚洲一区二区三区欧美精品| 黑人欧美特级aaaaaa片| 丝袜在线中文字幕| 99re在线观看精品视频| 后天国语完整版免费观看| 99精品在免费线老司机午夜| 成人特级黄色片久久久久久久| 国产视频一区二区在线看| 一进一出抽搐gif免费好疼 | 天天添夜夜摸| e午夜精品久久久久久久| 午夜福利在线观看吧| 亚洲国产精品999在线| 超碰97精品在线观看| 欧美亚洲日本最大视频资源| 日韩精品青青久久久久久| 国产主播在线观看一区二区| 国产男靠女视频免费网站| 亚洲欧美激情在线| 日韩精品青青久久久久久| 99re在线观看精品视频| 亚洲国产精品sss在线观看 | 身体一侧抽搐| 日韩成人在线观看一区二区三区| 国产精品综合久久久久久久免费 | 色婷婷av一区二区三区视频| 精品第一国产精品| 亚洲va日本ⅴa欧美va伊人久久| 三上悠亚av全集在线观看| 精品人妻在线不人妻| 欧美激情极品国产一区二区三区| 桃红色精品国产亚洲av| 国产精品一区二区免费欧美| 亚洲精品一卡2卡三卡4卡5卡| 久久久久久人人人人人| av天堂在线播放| 欧美黑人欧美精品刺激| 亚洲精品中文字幕一二三四区| 日韩有码中文字幕| 精品国产乱子伦一区二区三区| av电影中文网址| 精品国产亚洲在线| 黄色女人牲交| 亚洲七黄色美女视频| 99国产综合亚洲精品| 国产精华一区二区三区| 嫁个100分男人电影在线观看| 又大又爽又粗| 性少妇av在线| 亚洲欧美一区二区三区久久| 777久久人妻少妇嫩草av网站| 国产精品1区2区在线观看.| 手机成人av网站| 免费在线观看影片大全网站| 国产又爽黄色视频| 色精品久久人妻99蜜桃| 久久草成人影院| 黄色毛片三级朝国网站| 欧美+亚洲+日韩+国产| 啪啪无遮挡十八禁网站| 啦啦啦在线免费观看视频4| 一进一出好大好爽视频| 高清在线国产一区| 男女做爰动态图高潮gif福利片 | 日本撒尿小便嘘嘘汇集6| 欧美亚洲日本最大视频资源| 男人操女人黄网站| 国产成人欧美| 亚洲色图 男人天堂 中文字幕| 九色亚洲精品在线播放| 夜夜爽天天搞| 亚洲精品一卡2卡三卡4卡5卡| 免费av毛片视频| 国产极品粉嫩免费观看在线| 高清欧美精品videossex| 无遮挡黄片免费观看| 亚洲黑人精品在线| 中文字幕色久视频| 成人18禁高潮啪啪吃奶动态图| 老司机深夜福利视频在线观看| 涩涩av久久男人的天堂| 久久精品人人爽人人爽视色| 色精品久久人妻99蜜桃| 久久草成人影院| 黄色a级毛片大全视频| 一边摸一边做爽爽视频免费| 亚洲,欧美精品.| 最近最新免费中文字幕在线| 欧美一级毛片孕妇| 免费日韩欧美在线观看| 国产真人三级小视频在线观看| 日本a在线网址| 成人国语在线视频| 91九色精品人成在线观看| 亚洲成人精品中文字幕电影 | 久久久水蜜桃国产精品网| 精品免费久久久久久久清纯| 亚洲免费av在线视频| 91精品国产国语对白视频| 国产精品乱码一区二三区的特点 | 在线观看舔阴道视频| 身体一侧抽搐| 欧美午夜高清在线| 90打野战视频偷拍视频| www.www免费av| 少妇的丰满在线观看| 成人精品一区二区免费| 女人高潮潮喷娇喘18禁视频| 免费高清视频大片| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲精品av麻豆狂野| ponron亚洲| 精品久久久久久久毛片微露脸| 夜夜夜夜夜久久久久| 两性午夜刺激爽爽歪歪视频在线观看 | 国产亚洲精品久久久久5区| 99热国产这里只有精品6| 午夜日韩欧美国产| 999精品在线视频| 成年人免费黄色播放视频| 国产精品偷伦视频观看了| 成人影院久久| 波多野结衣高清无吗| а√天堂www在线а√下载| 视频区图区小说| 久久人妻av系列| 久久精品亚洲熟妇少妇任你| 美女大奶头视频| 日韩高清综合在线| 人人妻人人添人人爽欧美一区卜| 黄色 视频免费看| 亚洲人成77777在线视频| 亚洲免费av在线视频| 老熟妇乱子伦视频在线观看| 成人三级黄色视频| 69av精品久久久久久| 欧洲精品卡2卡3卡4卡5卡区| 亚洲欧美激情在线| 琪琪午夜伦伦电影理论片6080| av福利片在线| 又大又爽又粗| 亚洲av片天天在线观看| 好男人电影高清在线观看| 久久久精品欧美日韩精品| 一区在线观看完整版| 欧美最黄视频在线播放免费 | 韩国精品一区二区三区| 日本精品一区二区三区蜜桃| a在线观看视频网站| 国内久久婷婷六月综合欲色啪| 又紧又爽又黄一区二区| 宅男免费午夜| 99热国产这里只有精品6| 九色亚洲精品在线播放| 国产精品爽爽va在线观看网站 | 50天的宝宝边吃奶边哭怎么回事| 丰满饥渴人妻一区二区三| 亚洲av美国av| 99香蕉大伊视频| 欧美乱色亚洲激情| 国产精品久久久人人做人人爽| 亚洲五月婷婷丁香| 免费在线观看日本一区| 婷婷精品国产亚洲av在线| videosex国产| 可以免费在线观看a视频的电影网站| 欧美精品亚洲一区二区| 99在线人妻在线中文字幕| 99热国产这里只有精品6| 国产伦一二天堂av在线观看| 亚洲国产毛片av蜜桃av| 高清毛片免费观看视频网站 | 亚洲色图av天堂| 国产精品久久久人人做人人爽| 亚洲一区二区三区欧美精品| 亚洲 欧美一区二区三区| 91成人精品电影| 啪啪无遮挡十八禁网站| 亚洲欧美日韩高清在线视频| 午夜影院日韩av| 高清黄色对白视频在线免费看| x7x7x7水蜜桃| 超碰成人久久| 80岁老熟妇乱子伦牲交| 男人的好看免费观看在线视频 | 亚洲欧美一区二区三区久久| 国产蜜桃级精品一区二区三区| 午夜精品久久久久久毛片777| 99久久99久久久精品蜜桃| 天天添夜夜摸| 国产单亲对白刺激| 在线观看66精品国产| 久久久水蜜桃国产精品网| 日本撒尿小便嘘嘘汇集6| 国产精品国产高清国产av| 免费av毛片视频| 久久这里只有精品19| 黄网站色视频无遮挡免费观看| 女性生殖器流出的白浆| 老司机福利观看| 亚洲成人久久性| 国产精品av久久久久免费| 丰满迷人的少妇在线观看| www.自偷自拍.com| 精品福利永久在线观看| 欧美最黄视频在线播放免费 | 男人舔女人下体高潮全视频| 久久午夜亚洲精品久久| 窝窝影院91人妻| 亚洲少妇的诱惑av| 大香蕉久久成人网| 热99国产精品久久久久久7| 中文字幕人妻丝袜一区二区| 国产麻豆69| 97人妻天天添夜夜摸| 国产精品爽爽va在线观看网站 | 999久久久精品免费观看国产| 一夜夜www| 人妻丰满熟妇av一区二区三区| 在线视频色国产色| 久久久久九九精品影院| 黑人猛操日本美女一级片| ponron亚洲| 女性生殖器流出的白浆| tocl精华| 中文字幕精品免费在线观看视频| 国产精品一区二区三区四区久久 | 亚洲色图 男人天堂 中文字幕| 老司机亚洲免费影院| av欧美777| 亚洲五月婷婷丁香| 国产免费男女视频| 亚洲精品粉嫩美女一区| 国产成人欧美在线观看| 日本黄色视频三级网站网址| 51午夜福利影视在线观看| 精品国产乱子伦一区二区三区| 日韩欧美一区视频在线观看| 久久久国产一区二区| 精品久久久久久,| 夜夜夜夜夜久久久久| 久久香蕉精品热| 亚洲av第一区精品v没综合| 黄色毛片三级朝国网站| 国产精品国产av在线观看| 人妻久久中文字幕网| 欧美+亚洲+日韩+国产| 国产黄色免费在线视频| 久久精品国产综合久久久| 免费在线观看完整版高清| 99久久综合精品五月天人人| 久久婷婷成人综合色麻豆| 国产黄色免费在线视频| 国产激情欧美一区二区| 国产蜜桃级精品一区二区三区| 十分钟在线观看高清视频www| 亚洲全国av大片| 丝袜人妻中文字幕| 色老头精品视频在线观看| 亚洲av日韩精品久久久久久密| 亚洲精品国产色婷婷电影| 久久久国产欧美日韩av| 99香蕉大伊视频| 亚洲五月色婷婷综合| 久久99一区二区三区| 精品久久久精品久久久| 黄色视频不卡| 亚洲在线自拍视频| 丰满的人妻完整版| 自拍欧美九色日韩亚洲蝌蚪91| 伊人久久大香线蕉亚洲五| 精品福利永久在线观看| 无限看片的www在线观看| 国产三级黄色录像| 高潮久久久久久久久久久不卡| 国产成人系列免费观看| 很黄的视频免费| 亚洲一区二区三区色噜噜 | 人人妻人人澡人人看| 女人高潮潮喷娇喘18禁视频| 亚洲免费av在线视频| 亚洲国产精品999在线| 欧美日韩亚洲国产一区二区在线观看| 午夜a级毛片| 色尼玛亚洲综合影院| 黄色女人牲交| 精品久久久久久成人av| 亚洲成人精品中文字幕电影 | 日日爽夜夜爽网站| 天堂√8在线中文| 国产aⅴ精品一区二区三区波| 久久亚洲精品不卡| 欧美中文日本在线观看视频| 国产真人三级小视频在线观看| 老司机午夜福利在线观看视频| 国产在线观看jvid| 成年人黄色毛片网站| 免费在线观看影片大全网站| 亚洲五月天丁香| 女同久久另类99精品国产91| 日韩视频一区二区在线观看| xxx96com| 18禁国产床啪视频网站| 国产成人啪精品午夜网站| 日韩精品青青久久久久久| 欧美精品一区二区免费开放| 曰老女人黄片| 国产成人精品在线电影| 久久热在线av| 午夜a级毛片| 欧美另类亚洲清纯唯美| 欧美日本亚洲视频在线播放| 别揉我奶头~嗯~啊~动态视频| 国产亚洲精品一区二区www| 久久中文看片网| 欧美大码av| 国产精品国产av在线观看| 国产精品 欧美亚洲| 亚洲第一av免费看| 亚洲成国产人片在线观看| 搡老岳熟女国产| 老司机午夜十八禁免费视频| 久久人人精品亚洲av| 久久久国产一区二区| 国产av一区二区精品久久| 成人三级做爰电影| 国产主播在线观看一区二区| 18禁黄网站禁片午夜丰满| 最好的美女福利视频网| 99久久综合精品五月天人人| 亚洲成人免费av在线播放| 亚洲免费av在线视频| 免费少妇av软件| 亚洲国产中文字幕在线视频| 欧美午夜高清在线| 国产av一区在线观看免费| 18禁国产床啪视频网站| 高潮久久久久久久久久久不卡| 国产三级黄色录像| 好看av亚洲va欧美ⅴa在| 夜夜爽天天搞| 身体一侧抽搐| 精品一区二区三区四区五区乱码| 国产一区在线观看成人免费| √禁漫天堂资源中文www| 亚洲成av片中文字幕在线观看| 看免费av毛片| 欧美日韩亚洲综合一区二区三区_| 欧美日韩av久久| 日韩大码丰满熟妇| 纯流量卡能插随身wifi吗| 国产成人一区二区三区免费视频网站| 成人国产一区最新在线观看| 首页视频小说图片口味搜索| 精品久久久久久,| 午夜久久久在线观看| 亚洲国产看品久久| 亚洲欧美精品综合久久99| 国产免费av片在线观看野外av| 欧美大码av| 久久精品影院6|