mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	This change introduces a few minor CEF API behavior changes: - A CefProcessMessage object cannot be reused after being passed to SendProcessMessage. - The |extra_info| argument to CefRenderProcessHandler::OnBrowserCreated may now be NULL. Where appropriate, we now utilize the default UTF string encoding format and shared memory to reduce copies and conversions for the cross-process transfer of arbitrary-length strings. For example, CefFrame::GetSource/GetText now involves zero UTF conversions and zero copies in the browser process for the CefString delivered to CefStringVisitor::Visit().
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright 2014 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 LIBCEF_RENDERER_RENDER_FRAME_OBSERVER_H_
 | 
						|
#define LIBCEF_RENDERER_RENDER_FRAME_OBSERVER_H_
 | 
						|
 | 
						|
#include "content/public/renderer/render_frame_observer.h"
 | 
						|
 | 
						|
#include "services/service_manager/public/cpp/binder_registry.h"
 | 
						|
#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
 | 
						|
 | 
						|
namespace content {
 | 
						|
class RenderFrame;
 | 
						|
class RenderView;
 | 
						|
}  // namespace content
 | 
						|
 | 
						|
class CefFrameImpl;
 | 
						|
 | 
						|
class CefRenderFrameObserver : public content::RenderFrameObserver {
 | 
						|
 public:
 | 
						|
  explicit CefRenderFrameObserver(content::RenderFrame* render_frame);
 | 
						|
  ~CefRenderFrameObserver() override;
 | 
						|
 | 
						|
  // RenderFrameObserver methods:
 | 
						|
  void DidCommitProvisionalLoad(ui::PageTransition transition) override;
 | 
						|
  void DidFailProvisionalLoad() override;
 | 
						|
  void DidFinishLoad() override;
 | 
						|
  void WillDetach() override;
 | 
						|
  void FocusedElementChanged(const blink::WebElement& element) override;
 | 
						|
  void DraggableRegionsChanged() override;
 | 
						|
  void DidCreateScriptContext(v8::Handle<v8::Context> context,
 | 
						|
                              int world_id) override;
 | 
						|
  void WillReleaseScriptContext(v8::Handle<v8::Context> context,
 | 
						|
                                int world_id) override;
 | 
						|
  void OnDestruct() override;
 | 
						|
  void OnInterfaceRequestForFrame(
 | 
						|
      const std::string& interface_name,
 | 
						|
      mojo::ScopedMessagePipeHandle* interface_pipe) override;
 | 
						|
  bool OnAssociatedInterfaceRequestForFrame(
 | 
						|
      const std::string& interface_name,
 | 
						|
      mojo::ScopedInterfaceEndpointHandle* handle) override;
 | 
						|
 | 
						|
  service_manager::BinderRegistry* registry() { return ®istry_; }
 | 
						|
  blink::AssociatedInterfaceRegistry* associated_interfaces() {
 | 
						|
    return &associated_interfaces_;
 | 
						|
  }
 | 
						|
 | 
						|
  void AttachFrame(CefFrameImpl* frame);
 | 
						|
 | 
						|
 private:
 | 
						|
  void OnLoadStart();
 | 
						|
  void OnLoadError();
 | 
						|
 | 
						|
  CefFrameImpl* frame_ = nullptr;
 | 
						|
 | 
						|
  service_manager::BinderRegistry registry_;
 | 
						|
 | 
						|
  // For interfaces which must be associated with some IPC::ChannelProxy,
 | 
						|
  // meaning that messages on the interface retain FIFO with respect to legacy
 | 
						|
  // Chrome IPC messages sent or dispatched on the channel.
 | 
						|
  blink::AssociatedInterfaceRegistry associated_interfaces_;
 | 
						|
 | 
						|
  DISALLOW_COPY_AND_ASSIGN(CefRenderFrameObserver);
 | 
						|
};
 | 
						|
 | 
						|
#endif  // LIBCEF_RENDERER_RENDER_FRAME_OBSERVER_H_
 |