// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module content.mojom;

interface TestService {
  // Doesn't actually do anything, just responds.
  DoSomething() => ();

  // Terminates the current process to cause a connection error. Meant to test
  // a connection error for the utility process.
  DoTerminateProcess() => ();

  // Crashes the current process. Meant to test that crash notifications are
  // being sent correctly.
  DoCrashImmediately() => ();

  // Tries to create a temporary folder. Requires a sandbox to succeed.
  CreateFolder() => (bool succeeded);

  // Retrieve the requestor name as seen by the test app providing this service.
  GetRequestorName() => (string name);

  // Requests that a new shared buffer be created and returned. If successful,
  // |buffer| is non-null and its contents match |message|'s bytes exactly.
  CreateSharedBuffer(string message) => (handle<shared_buffer>? buffer);
};
