123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // Copyright 2017 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.
- #ifndef ASH_LOCK_SCREEN_ACTION_LOCK_SCREEN_NOTE_LAUNCHER_H_
- #define ASH_LOCK_SCREEN_ACTION_LOCK_SCREEN_NOTE_LAUNCHER_H_
- #include "ash/ash_export.h"
- #include "ash/tray_action/tray_action.h"
- #include "ash/tray_action/tray_action_observer.h"
- #include "base/callback.h"
- #include "base/scoped_observation.h"
- namespace ash {
- // A helper class for requesting a lock screen app that provides a callback run
- // when the action launch process finishes (both successfuly or with a failure).
- class ASH_EXPORT LockScreenNoteLauncher : public TrayActionObserver {
- public:
- using LaunchCallback = base::OnceCallback<void(bool success)>;
- LockScreenNoteLauncher();
- LockScreenNoteLauncher(const LockScreenNoteLauncher&) = delete;
- LockScreenNoteLauncher& operator=(const LockScreenNoteLauncher&) = delete;
- ~LockScreenNoteLauncher() override;
- // Whether the lock screen note state indicates that a note action launch can
- // be requested - note that |Run| will not succeed if this returns false.
- static bool CanAttemptLaunch();
- // Requests a lock screen note launch, and starts observing lock screen note
- // state changes - when the state changes to a non-launching state (either
- // kActive - indicating launch success, or kAvailable or kNotAvailable -
- // indicating launch failure), it runs |callback|.
- // This can handle only one launch requests at a time - i.e. it should not be
- // called again before |callback| is run.
- // Returns whether the note launch was successfully requested. |callback| will
- // not be called if the return value is false.
- bool Run(mojom::LockScreenNoteOrigin action_origin, LaunchCallback callback);
- // TrayActionObserver:
- void OnLockScreenNoteStateChanged(mojom::TrayActionState state) override;
- private:
- // Called when the launch attempt completes - resets the object state and runs
- // the launch callback provided to |Run|.
- void OnLaunchDone(bool success);
- // The callback provided to |Run|.
- LaunchCallback callback_;
- base::ScopedObservation<TrayAction, TrayActionObserver>
- tray_action_observation_{this};
- };
- } // namespace ash
- #endif // ASH_LOCK_SCREEN_ACTION_LOCK_SCREEN_NOTE_LAUNCHER_H_
|