mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	Add support for navigator.onLine and online/offline window events (issue #234).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@234 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
		| @@ -16,6 +16,7 @@ | ||||
| #include "build/build_config.h" | ||||
| #include "net/base/net_module.h" | ||||
| #include "net/url_request/url_request.h" | ||||
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebNetworkStateNotifier.h" | ||||
| #include "ui/gfx/gl/gl_implementation.h" | ||||
| #include "webkit/blob/blob_storage_controller.h" | ||||
| #include "webkit/blob/blob_url_request_job.h" | ||||
| @@ -175,6 +176,16 @@ void CefProcessUIThread::Init() { | ||||
|       webkit::npapi::PluginList::Singleton()->AddExtraPluginPath(path); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // Create a network change notifier before starting the IO & File threads. | ||||
|   network_change_notifier_.reset(net::NetworkChangeNotifier::Create()); | ||||
|  | ||||
|   // Add a listener for OnOnlineStateChanged to notify WebKit of changes. | ||||
|   net::NetworkChangeNotifier::AddOnlineStateObserver(this); | ||||
|  | ||||
|   // Initialize WebKit with the current state. | ||||
|   WebKit::WebNetworkStateNotifier::setOnLine( | ||||
|       !net::NetworkChangeNotifier::IsOffline()); | ||||
| } | ||||
|  | ||||
| void CefProcessUIThread::CleanUp() { | ||||
| @@ -195,5 +206,15 @@ void CefProcessUIThread::CleanUp() { | ||||
|   delete webkit_init_; | ||||
|   webkit_init_ = NULL; | ||||
|  | ||||
|   // Release the network change notifier after all other threads end. | ||||
|   net::NetworkChangeNotifier::RemoveOnlineStateObserver(this); | ||||
|   network_change_notifier_.reset(); | ||||
|  | ||||
|   PlatformCleanUp(); | ||||
| } | ||||
|  | ||||
| void CefProcessUIThread::OnOnlineStateChanged(bool online) { | ||||
|   DCHECK(CefThread::CurrentlyOn(CefThread::UI)); | ||||
|   WebKit::WebNetworkStateNotifier::setOnLine(online); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,9 @@ | ||||
| #define _CEF_PROCESS_UI_THREAD | ||||
|  | ||||
| #include "base/basictypes.h" | ||||
| #include "base/memory/scoped_ptr.h" | ||||
| #include "cef_thread.h" | ||||
| #include "net/base/network_change_notifier.h" | ||||
|  | ||||
| class BrowserWebKitInit; | ||||
| namespace base { | ||||
| @@ -23,7 +25,10 @@ class StatsTable; | ||||
| // Applications must initialize the COM library before they can call | ||||
| // COM library functions other than CoGetMalloc and memory allocation | ||||
| // functions, so this class initializes COM for those users. | ||||
| class CefProcessUIThread : public CefThread { | ||||
| class CefProcessUIThread | ||||
|     : public net::NetworkChangeNotifier::OnlineStateObserver, | ||||
|       public CefThread | ||||
| { | ||||
|  public: | ||||
|   explicit CefProcessUIThread(); | ||||
|   CefProcessUIThread(MessageLoop* message_loop); | ||||
| @@ -36,11 +41,16 @@ class CefProcessUIThread : public CefThread { | ||||
|   void PlatformInit(); | ||||
|   void PlatformCleanUp(); | ||||
|  | ||||
|   // From net::NetworkChangeNotifier::OnlineStateObserver | ||||
|   void OnOnlineStateChanged(bool online); | ||||
|  | ||||
|   base::StatsTable* statstable_; | ||||
|  | ||||
|   // WebKit implementation class. | ||||
|   BrowserWebKitInit* webkit_init_; | ||||
|  | ||||
|   scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; | ||||
|  | ||||
|   DISALLOW_COPY_AND_ASSIGN(CefProcessUIThread); | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user