mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	Also perform related C++ cleanup:
- Use =default instead of {} for default implementations of
  constructors/destructors.
- Replace typedef with using.
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.5 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_MENU_MANAGER_H_
 | 
						|
#define CEF_LIBCEF_BROWSER_MENU_MANAGER_H_
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include "libcef/browser/menu_model_impl.h"
 | 
						|
 | 
						|
#include "libcef/browser/menu_runner.h"
 | 
						|
 | 
						|
#include "base/memory/weak_ptr.h"
 | 
						|
#include "content/public/browser/context_menu_params.h"
 | 
						|
#include "content/public/browser/web_contents_observer.h"
 | 
						|
 | 
						|
namespace content {
 | 
						|
class RenderFrameHost;
 | 
						|
class WebContents;
 | 
						|
}  // namespace content
 | 
						|
 | 
						|
class AlloyBrowserHostImpl;
 | 
						|
class CefRunContextMenuCallback;
 | 
						|
 | 
						|
class CefMenuManager : public CefMenuModelImpl::Delegate,
 | 
						|
                       public content::WebContentsObserver {
 | 
						|
 public:
 | 
						|
  CefMenuManager(AlloyBrowserHostImpl* browser,
 | 
						|
                 std::unique_ptr<CefMenuRunner> runner);
 | 
						|
 | 
						|
  CefMenuManager(const CefMenuManager&) = delete;
 | 
						|
  CefMenuManager& operator=(const CefMenuManager&) = delete;
 | 
						|
 | 
						|
  ~CefMenuManager() override;
 | 
						|
 | 
						|
  // Delete the runner to free any platform constructs.
 | 
						|
  void Destroy();
 | 
						|
 | 
						|
  // Returns true if the context menu is currently showing.
 | 
						|
  bool IsShowingContextMenu();
 | 
						|
 | 
						|
  // Create the context menu.
 | 
						|
  bool CreateContextMenu(const content::ContextMenuParams& params);
 | 
						|
  void CancelContextMenu();
 | 
						|
 | 
						|
 private:
 | 
						|
  // CefMenuModelImpl::Delegate methods.
 | 
						|
  void ExecuteCommand(CefRefPtr<CefMenuModelImpl> source,
 | 
						|
                      int command_id,
 | 
						|
                      cef_event_flags_t event_flags) override;
 | 
						|
  void MenuWillShow(CefRefPtr<CefMenuModelImpl> source) override;
 | 
						|
  void MenuClosed(CefRefPtr<CefMenuModelImpl> source) override;
 | 
						|
  bool FormatLabel(CefRefPtr<CefMenuModelImpl> source,
 | 
						|
                   std::u16string& label) override;
 | 
						|
 | 
						|
  void ExecuteCommandCallback(int command_id, cef_event_flags_t event_flags);
 | 
						|
 | 
						|
  // Create the default menu model.
 | 
						|
  void CreateDefaultModel();
 | 
						|
  // Execute the default command handling.
 | 
						|
  void ExecuteDefaultCommand(int command_id);
 | 
						|
 | 
						|
  // Returns true if the specified id is a custom context menu command.
 | 
						|
  bool IsCustomContextMenuCommand(int command_id);
 | 
						|
 | 
						|
  // AlloyBrowserHostImpl pointer is guaranteed to outlive this object.
 | 
						|
  AlloyBrowserHostImpl* browser_;
 | 
						|
 | 
						|
  std::unique_ptr<CefMenuRunner> runner_;
 | 
						|
 | 
						|
  CefRefPtr<CefMenuModelImpl> model_;
 | 
						|
  content::ContextMenuParams params_;
 | 
						|
 | 
						|
  // Not owned by this class.
 | 
						|
  CefRunContextMenuCallback* custom_menu_callback_;
 | 
						|
 | 
						|
  // Must be the last member.
 | 
						|
  base::WeakPtrFactory<CefMenuManager> weak_ptr_factory_;
 | 
						|
};
 | 
						|
 | 
						|
#endif  // CEF_LIBCEF_BROWSER_MENU_MANAGER_H_
 |