// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module echo.mojom; import "components/os_crypt/async/common/encryptor.mojom"; import "mojo/public/mojom/base/file_path.mojom"; import "mojo/public/mojom/base/shared_memory.mojom"; import "sandbox/policy/mojom/sandbox.mojom"; // Echos its input. [ServiceSandbox=sandbox.mojom.Sandbox.kService] interface EchoService { // Echos the passed-in string. EchoString(string input) => (string echoed_input); // Echos the passed-in string into the provided shared memory buffer. EchoStringToSharedMemory( string input, mojo_base.mojom.UnsafeSharedMemoryRegion region); // Causes the service to disconnect itself. Quit(); // Forcibly crashes the service. Crash(); // Delay Load a DLL. [EnableIf=is_win] DelayLoad(); // Helper to validate that the right failure happens in some tests. enum LoadStatus { kSuccess, kFailedLoadLibrary, kFailedGetProcAddress, kFailedCallingDelayLoad, }; // Attempts to load a library by path - kService should prevent this unless it // was preloaded into the utility at service startup. // `library` is a library path or module name to attempt to load. // `call_winmm_delayload` - if true will attempt to call the function // `FnCallsDelayloadFn` in the library, which in turn attempts to call a // delayloaded function in winmm.dll. // `status` indicates where a failure occurred, or kSuccess. // `error_code` is the last error, or 0 on success. [EnableIf=is_win] LoadNativeLibrary( mojo_base.mojom.FilePath library, bool call_winmm_delayload) => (LoadStatus status, uint32 error_code); // Takes an `encryptor` and uses it to decrypt the `input` data. The plaintext // is then re-encrypted with the same `encryptor` and returned in `output`, if // both operations succeeded, otherwise no value is returned. DecryptEncrypt( os_crypt_async.mojom.Encryptor encryptor, array input) => (array? output); // Verifies that CHECK_IS_TEST() is enabled. VerifyCheckIsTest() => (bool is_test); };