File: composebox.mojom

package info (click to toggle)
chromium 139.0.7258.138-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,120,676 kB
  • sloc: cpp: 35,100,869; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (74 lines) | stat: -rw-r--r-- 3,106 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module composebox.mojom;

import "mojo/public/mojom/base/big_buffer.mojom";
import "mojo/public/mojom/base/time.mojom";
import "mojo/public/mojom/base/unguessable_token.mojom";
import "components/omnibox/composebox/composebox_query.mojom";

// Information about a file selected by the user in the WebUI.
struct SelectedFileInfo {
  // Name of the file.
  string file_name;
  // Mime type of the file.
  string mime_type;
  // Time that the file was selected at.
  mojo_base.mojom.JSTime selection_time;
};

// Used by the WebUI page to bootstrap bidirectional communication.
interface PageHandlerFactory {
  // The component calls this method when it is first initialized.
  CreatePageHandler(pending_remote<Page> page,
                    pending_receiver<PageHandler> handler);
};

// Browser-side handler for requests from NTP Composebox UI.
interface PageHandler {
  // Called when a user has started a composebox session.
  NotifySessionStarted();
  // Called when a user ends a composebox session.
  NotifySessionAbandoned();
  // Called when a user submits a query with valid input.
  SubmitQuery(string query_text,
              uint8 mouse_button,
              bool alt_key,
              bool ctrl_key,
              bool meta_key,
              bool shift_key);

  // File management.
  // Upload a file to the server. Handler will create a token for identifying
  // and return it via callback. The UnguessableToken can only be associated
  // with a file via this method and only with an UnguessableToken created by
  // the browser-process at this step.
  // The controller that houses the association is specific to the WebUI's
  // handler instance.
  // What the WebUI can do with the UnguessableToken:
  //   1. Delete a file from browser-process cache.
  //   2. Listen for status changes from browser-process. (Not implemented)
  //   3. Send list of tokens to browser-process when a query is submitted. The
  //      browser-side cross-references this list with what it has and only
  //      puts server IDs (separate IDs stored in browser-process) in the final
  //      query for files that the WebUI and browser-process have the same
  //      token for. (Not implemented)
  AddFile(SelectedFileInfo file_info, mojo_base.mojom.BigBuffer file_bytes) =>
      (mojo_base.mojom.UnguessableToken token);
  // Notify handler of file deletion. This removes the file from the
  // browser-side cache.
  DeleteFile(mojo_base.mojom.UnguessableToken token);
  // Clears all files from cache.
  ClearFiles();
};

// NewTabPage WebUI-side handler for requests from the browser.
interface Page {
  // Updates the status of a file upload operation. Used to update the user on
  // the status of a file upload operation.
  OnFileUploadStatusChanged(mojo_base.mojom.UnguessableToken token,
                           composebox_query.mojom.FileUploadStatus status,
                           composebox_query.mojom.FileUploadErrorType? error_type);
};