// Copyright 2016 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 ash.mojom;

// For GURL.
import "url/mojom/url.mojom";

// An exported object in ash which lets an ash consumer set a client interface.
interface NewWindowController {
  SetClient(associated NewWindowClient client);

  // TODO(crbug.com/755448): Remove this when the new shortcut viewer is
  // enabled.
  // Shows the keyboard shortcut overlay. TODO(mash): this calls the client
  // function of the same name below, but it should be implemented inside ash.
  ShowKeyboardOverlay();
};

// A delegate interface that an ash user sends to ash to handle certain window
// management responsibilities.
interface NewWindowClient {
  // Invoked when the user uses Ctrl+T to open a new tab.
  NewTab();

  // Opens a new tab with the specified URL.
  NewTabWithUrl(url.mojom.Url url);

  // Invoked when the user uses Ctrl-N or Ctrl-Shift-N to open a new window.
  NewWindow(bool incognito);

  // Invoked when an accelerator is used to open the file manager.
  OpenFileManager();

  // Invoked when the user opens Crosh.
  OpenCrosh();

  // Invoked when an accelerator is used to open help center.
  OpenGetHelp();

  // Invoked when the user uses Shift+Ctrl+T to restore the closed tab.
  RestoreTab();

  // TODO(crbug.com/755448): Remove this when the new shortcut viewer is
  // enabled.
  // Shows the keyboard shortcut overlay.
  ShowKeyboardOverlay();

  // Show the keyboard shortcut viewer.
  ShowKeyboardShortcutViewer();

  // Shows the task manager window.
  ShowTaskManager();

  // Opens the feedback page for "Report Issue".
  OpenFeedbackPage();
};
