[go: nahoru, domu]

blob: 3e028ce5d9ab07fab812a0f21c0eeffdfc5b8b76 [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_ASH_NOTE_TAKING_CONTROLLER_CLIENT_H_
#define CHROME_BROWSER_ASH_NOTE_TAKING_CONTROLLER_CLIENT_H_
#include "ash/public/cpp/note_taking_client.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "chrome/browser/ash/note_taking_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_observer.h"
#include "components/user_manager/user_manager.h"
namespace ash {
class NoteTakingControllerClient
: public NoteTakingClient,
public user_manager::UserManager::UserSessionStateObserver,
public ProfileObserver {
public:
explicit NoteTakingControllerClient(NoteTakingHelper* helper);
NoteTakingControllerClient(const NoteTakingControllerClient&) = delete;
NoteTakingControllerClient& operator=(const NoteTakingControllerClient&) =
delete;
~NoteTakingControllerClient() override;
// NoteTakingClient:
bool CanCreateNote() override;
void CreateNote() override;
// user_manager::UserManager::UserSessionStateObserver:
void ActiveUserChanged(user_manager::User* active_user) override;
// ProfileObserver:
void OnProfileWillBeDestroyed(Profile* profile) override;
void SetProfileForTesting(Profile* profile) { profile_ = profile; }
private:
void SetProfileByUser(const user_manager::User* user);
// Unowned pointer to the note taking helper.
raw_ptr<NoteTakingHelper> helper_ = nullptr;
// Unowned pointer to the active profile.
raw_ptr<Profile> profile_ = nullptr;
base::ScopedObservation<Profile, ProfileObserver> profile_observation_{this};
base::WeakPtrFactory<NoteTakingControllerClient> weak_ptr_factory_{this};
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_NOTE_TAKING_CONTROLLER_CLIENT_H_