remote/cef_client.thrift (135 lines of code) (raw):
/**
* bool Boolean, one byte
* i8 (byte) Signed 8-bit integer
* i16 Signed 16-bit integer
* i32 Signed 32-bit integer
* i64 Signed 64-bit integer
* double 64-bit floating point value
* string String
* binary Blob (byte array)
* map<t1,t2> Map from one type to another
* list<t1> Ordered list of one type
* set<t1> Set of unique elements of one type
*/
include "shared.thrift"
namespace cpp thrift_codegen
namespace java com.jetbrains.cef.remote.thrift_codegen
struct Point {
1: required i32 x,
2: required i32 y,
}
struct Rect {
1: required i32 x,
2: required i32 y,
3: required i32 w,
4: required i32 h,
}
struct ScreenInfo {
1: required double device_scale_factor,
2: required i32 depth,
3: required i32 depth_per_component,
4: required bool is_monochrome,
5: required Rect rect,
6: required Rect available_rect,
}
struct ContextMenuParams {
1: required i32 x,
2: required i32 y,
3: required i32 type_flags,
4: required string link_url,
5: required string unfiltered_link_url,
6: required string source_url,
7: required bool has_image_contents,
8: required string title_text,
9: required string page_url,
10: required string frame_url,
11: required string frame_charset,
12: required i32 media_type,
13: required i32 media_state_flags,
14: required string selected_text,
15: required string misspelled_word,
16: required bool is_editable,
17: required bool is_spellcheck_enabled,
18: required i32 edit_state_flags,
19: required bool is_custom_menu,
// not implemented:
// GetDictionarySuggestions(std::vector<CefString>& suggestions);
}
enum MenuItemType {
MENUITEMTYPE_NONE = 0,
MENUITEMTYPE_COMMAND = 1,
MENUITEMTYPE_CHECK = 2,
MENUITEMTYPE_RADIO = 3,
MENUITEMTYPE_SEPARATOR = 4,
MENUITEMTYPE_SUBMENU = 5
}
// Struct to represent a Menu Item
struct MenuItem {
1: required i32 command_id = -1;
2: required string label = "";
3: required MenuItemType type = 0;
4: required i32 group_id = -1;
5: required bool visible = true;
6: required bool enabled = true;
7: required bool checked = false;
8: required list<MenuItem> sub_menu = [];
// Not supported:
// optional KeyboardAccelerator accelerator;
// optional i32 color_text;
// optional i32 color_background;
// optional string font_list;
}
service ClientHandlers {
string echo(1:string msg),
oneway void log(1: string msg),
//
// CefAppHandler
//
oneway void AppHandler_OnContextInitialized(),
//
// CefRenderHandler
//
// TODO: remake logic to avoid non-oneway-void calls:
// 1. notify server with screen-data changes immediately
// 2. calculate screen-data directly on server by request from CEF
Rect RenderHandler_GetViewRect(1:i32 bid),
ScreenInfo RenderHandler_GetScreenInfo(1:i32 bid),
Point RenderHandler_GetScreenPoint(1:i32 bid, 2:i32 viewX, 3:i32 viewY),
void RenderHandler_OnPaint(1:i32 bid, 2: bool popup, 3:i32 dirtyRectsCount, 4: string sharedMemName, 5: i64 sharedMemHandle, 6: i32 width, 7: i32 height),
oneway void RenderHandler_OnPopupShow(1:i32 bid, 2: bool show),
oneway void RenderHandler_OnPopupSize(1:i32 bid, 2: Rect rect),
oneway void RenderHandler_OnImeCompositionRangeChanged(1:i32 bid, 2:shared.Range selectionRange, 3:list<Rect> characterBounds),
oneway void RenderHandler_OnTextSelectionChanged(1:i32 bid, 2:string selectedText, 3:shared.Range selectionRange),
// TODO: implement
// RenderHandler_StartDragging(1:i32 bid, CefRefPtr<CefDragData> drag_data, DragOperationsMask allowed_ops, int x, int y)
// RenderHandler_UpdateDragCursor(1:i32 bid, DragOperation operation)
//
//
// CefLifeSpanHandler
//
bool LifeSpanHandler_OnBeforePopup(1:i32 bid, 2:shared.RObject frame, 3:string url, 4:string frameName, 5:bool gesture), // TODO: add other params
oneway void LifeSpanHandler_OnAfterCreated(1:i32 bid, 2:i32 nativeBrowserIdentifier),
bool LifeSpanHandler_DoClose(1:i32 bid),
oneway void LifeSpanHandler_OnBeforeClose(1:i32 bid),
//
// CefLoadHandler
//
oneway void LoadHandler_OnLoadingStateChange(1:i32 bid, 2: bool isLoading, 3:bool canGoBack, 4: bool canGoForward),
void LoadHandler_OnLoadStart(1:i32 bid, 2:shared.RObject frame, 3:i32 transition_type),
void LoadHandler_OnLoadEnd(1:i32 bid, 2:shared.RObject frame, 3:i32 httpStatusCode),
void LoadHandler_OnLoadError(1:i32 bid, 2:shared.RObject frame, 3:i32 errorCode, 4:string errorText, 5:string failedUrl),
//
// CefDisplayHandler
//
void DisplayHandler_OnAddressChange(1:i32 bid, 2:shared.RObject frame, 3:string url),
oneway void DisplayHandler_OnTitleChange(1:i32 bid, 2:string title),
bool DisplayHandler_OnTooltip(1:i32 bid, 2:string text),
oneway void DisplayHandler_OnStatusMessage(1:i32 bid, 2:string value),
bool DisplayHandler_OnConsoleMessage(1:i32 bid, 2:string level, 3:string message, 4: string source, 5: i32 line),
//
// CefKeyboardHandler (will be called on the UI thread). TODO: do we really need CefKeyboardHandler in OSR ?
//
bool KeyboardHandler_OnPreKeyEvent(1:i32 bid, 2: shared.KeyEvent event) // TODO: support bool* is_keyboard_shortcut
bool KeyboardHandler_OnKeyEvent(1:i32 bid, 2: shared.KeyEvent event)
//
// CefFocusHandler (will be called on the UI thread). TODO: do we really need CefFocusHandler in OSR ?
//
oneway void FocusHandler_OnTakeFocus(1:i32 bid, 2: bool next)
bool FocusHandler_OnSetFocus(1:i32 bid, 2:string source)
oneway void FocusHandler_OnGotFocus(1:i32 bid)
//
// CefRequestHandler
//
bool RequestHandler_OnBeforeBrowse(1:i32 bid, 2:shared.RObject frame, 3:shared.RObject request, 4:bool user_gesture, 5:bool is_redirect),
bool RequestHandler_OnOpenURLFromTab(1:i32 bid, 2:shared.RObject frame, 3:string target_url, 4:bool user_gesture),
bool RequestHandler_GetAuthCredentials(1:i32 bid, 2:string origin_url, 3:bool isProxy, 4: string host, 5: i32 port, 6: string realm, 7: string scheme, 8: shared.RObject authCallback),
bool RequestHandler_OnCertificateError(1:i32 bid, 2:string cert_error, 3:string request_url, 4: binary sslInfo, 5: shared.RObject callback),
oneway void RequestHandler_OnRenderProcessTerminated(1:i32 bid, 2:string status, 3:i32 errCode, 4:string errText),
shared.RObject RequestHandler_GetResourceRequestHandler(1:i32 bid, 2:shared.RObject frame, 3:shared.RObject request, 4:bool isNavigation, 5:bool isDownload, 6:string requestInitiator),
oneway void ResourceRequestHandler_Dispose(1: i32 rrHandler),
shared.RObject ResourceRequestHandler_GetCookieAccessFilter(1: i32 rrHandler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request),
oneway void CookieAccessFilter_Dispose(1: i32 filter),
bool CookieAccessFilter_CanSendCookie(1: i32 filter, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request, 5:list<string> cookie),
bool CookieAccessFilter_CanSaveCookie(1: i32 filter, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request, 5:shared.RObject response, 6:list<string> cookie),
bool ResourceRequestHandler_OnBeforeResourceLoad(1: i32 rrHandler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request),
shared.RObject ResourceRequestHandler_GetResourceHandler(1: i32 rrHandler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request),
oneway void ResourceHandler_Dispose(1: i32 resourceHandler),
bool ResourceHandler_ProcessRequest(1:i32 resourceHandler, 2:shared.RObject request, 3:shared.RObject callback)
shared.ResponseHeaders ResourceHandler_GetResponseHeaders(1:i32 resourceHandler, 2:shared.RObject response)
shared.ResponseData ResourceHandler_ReadResponse(1:i32 resourceHandler, 2:i32 bytes_to_read, 3:shared.RObject callback)
void ResourceHandler_Cancel(1:i32 resourceHandler) // NOTE: can't be oneway (because server can dispose java peer before callback execution)
string ResourceRequestHandler_OnResourceRedirect(1: i32 rrHandler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request, 5:shared.RObject response, 6:string new_url),
bool ResourceRequestHandler_OnResourceResponse(1: i32 rrHandler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request, 5:shared.RObject response),
void ResourceRequestHandler_OnResourceLoadComplete(1: i32 rrHandler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request, 5:shared.RObject response, 6:string status, 7:i64 receivedContentLength),
bool ResourceRequestHandler_OnProtocolExecution(1: i32 rrHandler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request, 5:bool allowOsExecution),
//
// CefContextMenuHandler
//
list<MenuItem> ContextMenuHandler_OnBeforeContextMenu(1: i32 bid, 2: shared.RObject frame, 3: ContextMenuParams params, 4: list<MenuItem> menu_model)
bool ContextMenuHandler_RunContextMenu(1: i32 bid, 2: shared.RObject frame, 3: ContextMenuParams params, 4: list<MenuItem> model, 5: shared.RObject callback)
bool ContextMenuHandler_OnContextMenuCommand(1: i32 bid, 2: shared.RObject frame, 3: ContextMenuParams params, 4: i32 command_id, 5: i32 event_flags)
void ContextMenuHandler_OnContextMenuDismissed(1: i32 bid, 2: shared.RObject frame);
//
// CefMessageRouter
//
bool MessageRouterHandler_onQuery(1: shared.RObject handler, 2:i32 bid, 3:shared.RObject frame, 4:i64 queryId, 5:string request, 6:bool persistent, 7:shared.RObject queryCallback),
void MessageRouterHandler_onQueryCanceled(1: shared.RObject handler, 2:i32 bid, 3:shared.RObject frame, 4:i64 queryId),
oneway void MessageRouterHandler_Dispose(1: i32 handler),
//
// Custom schemes
//
shared.RObject SchemeHandlerFactory_CreateHandler(1:i32 schemeHandlerFactory, 2:i32 bid, 3:shared.RObject frame, 4:string scheme_name, 5:shared.RObject request),
oneway void SchemeHandlerFactory_Dispose(1:i32 schemeHandlerFactory),
//
// CefCompletionCallback
//
oneway void CompletionCallback_OnComplete(1:i32 completionCallback), // NOTE: can be oneway (because java peer is disposed on java side after callback execution)
oneway void IntCallback_OnComplete(1:i32 intCallback, 2:i32 result), // NOTE: can be oneway (because java peer is disposed on java side after callback execution)
//
// CefRequestContextHandler
//
shared.RObject RequestContextHandler_GetResourceRequestHandler(1:i32 handler, 2:i32 bid, 3:shared.RObject frame, 4:shared.RObject request, 5:bool isNavigation, 6:bool isDownload, 7:string requestInitiator),
//
// CefCookieVisitor
//
bool CookieVisitor_Visit(1:i32 visitor, 2:shared.Cookie cookie, 3:i32 count, 4:i32 total),
oneway void CookieVisitor_Dispose(1:i32 visitor),
//
// CefStringVisitor
//
void StringVisitor_Visit(1:i32 stringVisitor, 2:string str), // NOTE: can't be oneway (because server can dispose java peer before callback execution)
oneway void StringVisitor_Dispose(1:i32 stringVisitor),
//
// CefDevToolsMessageObserver
//
oneway void DevToolsMessageObserver_Dispose(1:i32 observer),
oneway void DevToolsMessageObserver_OnDevToolsMethodResult(1:i32 observer, 2:i32 bid, 3:i32 messageId, 4:bool success, 5:string result),
oneway void DevToolsMessageObserver_OnDevToolsEvent(1:i32 observer, 2:i32 bid, 3:string method, 4:string parameters),
//
// CefPermissionHandler
//
bool PermissionHandler_OnRequestMediaAccessPermission(1:i32 bid, 2:shared.RObject frame, 3:string requesting_origin, 4:i32 requested_permissions, 5:shared.RObject mediaAccessCallback),
//
// CefPdfPrintCallback
//
oneway void PdfPrintCallback_OnPdfPrintFinished(1:i32 pdfPrintCallback, 2:string path, 3:bool ok),
//
// CefRunFileDialogCallback
//
oneway void RunFileDialogCallback_OnFileDialogDismissed(1:i32 runFileDialogCallback, 2:list<string> filePaths),
}