1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/browser/api/idle/idle_api.h"
#include "base/values.h"
#include "extensions/browser/api/idle/idle_api_constants.h"
#include "extensions/browser/api/idle/idle_manager.h"
#include "extensions/browser/api/idle/idle_manager_factory.h"
namespace extensions {
namespace {
// In seconds. Set >1 sec for security concerns.
const int kMinThreshold = 15;
// Four hours, in seconds. Not set arbitrarily high for security concerns.
const int kMaxThreshold = 4 * 60 * 60;
int ClampThreshold(int threshold) {
if (threshold < kMinThreshold) {
threshold = kMinThreshold;
} else if (threshold > kMaxThreshold) {
threshold = kMaxThreshold;
}
return threshold;
}
} // namespace
IdleQueryStateFunction::~IdleQueryStateFunction() = default;
ExtensionFunction::ResponseAction IdleQueryStateFunction::Run() {
EXTENSION_FUNCTION_VALIDATE(args().size() >= 1);
const auto& threshold_value = args()[0];
EXTENSION_FUNCTION_VALIDATE(threshold_value.is_int());
int threshold = ClampThreshold(threshold_value.GetInt());
ui::IdleState state =
IdleManagerFactory::GetForBrowserContext(browser_context())
->QueryState(threshold);
return RespondNow(WithArguments(IdleManager::CreateIdleValue(state)));
}
void IdleQueryStateFunction::IdleStateCallback(ui::IdleState state) {
}
IdleSetDetectionIntervalFunction::~IdleSetDetectionIntervalFunction() = default;
ExtensionFunction::ResponseAction IdleSetDetectionIntervalFunction::Run() {
EXTENSION_FUNCTION_VALIDATE(args().size() >= 1);
const auto& threshold_value = args()[0];
EXTENSION_FUNCTION_VALIDATE(threshold_value.is_int());
int threshold = ClampThreshold(threshold_value.GetInt());
IdleManagerFactory::GetForBrowserContext(browser_context())
->SetThreshold(extension_id(), threshold);
return RespondNow(NoArguments());
}
IdleGetAutoLockDelayFunction::~IdleGetAutoLockDelayFunction() = default;
ExtensionFunction::ResponseAction IdleGetAutoLockDelayFunction::Run() {
const int delay = IdleManagerFactory::GetForBrowserContext(browser_context())
->GetAutoLockDelay()
.InSeconds();
return RespondNow(WithArguments(delay));
}
} // namespace extensions
|