// Copyright 2014 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 COMPONENTS_HANDOFF_HANDOFF_MANAGER_H_
#define COMPONENTS_HANDOFF_HANDOFF_MANAGER_H_

#import <Foundation/Foundation.h>

#include "base/mac/availability.h"
#include "build/build_config.h"
#include "components/handoff/handoff_utility.h"
#include "url/gurl.h"

@class NSUserActivity;

#if defined(OS_IOS)
namespace user_prefs {
class PrefRegistrySyncable;
}  // namespace user_prefs
#endif

// Maintains all of the state relevant to the Handoff feature. Allows Chrome to
// hand off the current active URL to other devices.
@interface HandoffManager : NSObject

#if defined(OS_IOS)
// Registers preferences related to Handoff.
+ (void)registerBrowserStatePrefs:(user_prefs::PrefRegistrySyncable*)registry;
#endif

// The active URL is defined as the URL of the most recently accessed tab. This
// method should be called any time the active URL might have changed. This
// method is idempotent.
- (void)updateActiveURL:(const GURL&)url API_AVAILABLE(macos(10.10));

@end

#if defined(OS_IOS)
@interface HandoffManager (TestingOnly)
- (NSURL*)userActivityWebpageURL;
@end
#endif

#endif  // COMPONENTS_HANDOFF_HANDOFF_MANAGER_H_
