mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights
 | |
| // reserved. Use of this source code is governed by a BSD-style license that can
 | |
| // be found in the LICENSE file.
 | |
| 
 | |
| #ifndef CEF_LIBCEF_BROWSER_NET_INTERNAL_SCHEME_HANDLER_H_
 | |
| #define CEF_LIBCEF_BROWSER_NET_INTERNAL_SCHEME_HANDLER_H_
 | |
| #pragma once
 | |
| 
 | |
| #include <string>
 | |
| 
 | |
| #include "include/cef_scheme.h"
 | |
| 
 | |
| #include "base/memory/ref_counted_memory.h"
 | |
| #include "url/gurl.h"
 | |
| 
 | |
| namespace scheme {
 | |
| 
 | |
| // All methods will be called on the browser process IO thread.
 | |
| class InternalHandlerDelegate {
 | |
|  public:
 | |
|   class Action {
 | |
|    public:
 | |
|     Action();
 | |
| 
 | |
|     // Set to the appropriate value or leave empty to have it determined based
 | |
|     // on the file extension.
 | |
|     std::string mime_type;
 | |
| 
 | |
|     // Option 1: Provide a stream for the resource contents. Set |stream_size|
 | |
|     // to the stream size or to -1 if unknown.
 | |
|     CefRefPtr<CefStreamReader> stream;
 | |
|     int stream_size;
 | |
| 
 | |
|     // Option 2: Provide a base::RefCountedMemory for the resource contents.
 | |
|     scoped_refptr<base::RefCountedMemory> bytes;
 | |
| 
 | |
|     // Option 3: Specify a resource id to load static content.
 | |
|     int resource_id;
 | |
| 
 | |
|     // Option 4: Redirect to the specified URL.
 | |
|     GURL redirect_url;
 | |
|   };
 | |
| 
 | |
|   virtual ~InternalHandlerDelegate() {}
 | |
| 
 | |
|   // Populate |action| and return true if the request was handled.
 | |
|   virtual bool OnRequest(CefRefPtr<CefBrowser> browser,
 | |
|                          CefRefPtr<CefRequest> request,
 | |
|                          Action* action) = 0;
 | |
| };
 | |
| 
 | |
| // Create an internal scheme handler factory. The factory will take ownership of
 | |
| // |delegate|.
 | |
| CefRefPtr<CefSchemeHandlerFactory> CreateInternalHandlerFactory(
 | |
|     std::unique_ptr<InternalHandlerDelegate> delegate);
 | |
| 
 | |
| }  // namespace scheme
 | |
| 
 | |
| #endif  // CEF_LIBCEF_BROWSER_NET_INTERNAL_SCHEME_HANDLER_H_
 |