Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2416)

Unified Diff: extensions/browser/api/networking_private/networking_private_api.cc

Issue 2628673002: Enable networking.onc for autolaunched kiosk sessions (on dev) (Closed)
Patch Set: . Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/api/networking_private/networking_private_api.cc
diff --git a/extensions/browser/api/networking_private/networking_private_api.cc b/extensions/browser/api/networking_private/networking_private_api.cc
index 5bfc42bd84eaff1c42a689290eb0cddcb8f1f316..481abfb63f747e65ccf5e074e76a1d56eb7ab306 100644
--- a/extensions/browser/api/networking_private/networking_private_api.cc
+++ b/extensions/browser/api/networking_private/networking_private_api.cc
@@ -14,17 +14,30 @@
#include "extensions/browser/api/networking_private/networking_private_delegate_factory.h"
#include "extensions/browser/extension_function_registry.h"
#include "extensions/common/api/networking_private.h"
+#include "extensions/common/extension_api.h"
+#include "extensions/common/features/feature_provider.h"
namespace {
const int kDefaultNetworkListLimit = 1000;
+const char kPrivateOnlyError[] = "Requires networkingPrivate API access.";
+
extensions::NetworkingPrivateDelegate* GetDelegate(
content::BrowserContext* browser_context) {
return extensions::NetworkingPrivateDelegateFactory::GetForBrowserContext(
browser_context);
}
+bool HasPrivateNetworkingAccess(const extensions::Extension* extension,
+ extensions::Feature::Context context,
+ const GURL& source_url) {
+ return extensions::ExtensionAPI::GetSharedInstance()
Devlin 2017/01/12 21:41:05 nitty nit: maybe just move the namespace extension
tbarzic 2017/01/12 21:59:55 Done.
+ ->IsAvailable("networkingPrivate", extension, context, source_url,
+ extensions::CheckAliasStatus::NOT_ALLOWED)
+ .is_available();
+}
+
} // namespace
namespace extensions {
@@ -282,6 +295,14 @@ bool NetworkingPrivateGetVisibleNetworksFunction::RunAsync() {
private_api::GetVisibleNetworks::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params);
+ // getVisibleNetworks is deprecated - allow it only for apps with
+ // networkingPrivate permissions.
+ if (!HasPrivateNetworkingAccess(extension(), source_context_type(),
+ source_url())) {
+ error_ = kPrivateOnlyError;
+ return false;
+ }
+
std::string network_type = private_api::ToString(params->network_type);
const bool configured_only = false;
const bool visible_only = true;
@@ -317,6 +338,13 @@ NetworkingPrivateGetEnabledNetworkTypesFunction::
ExtensionFunction::ResponseAction
NetworkingPrivateGetEnabledNetworkTypesFunction::Run() {
+ // getEnabledNetworkTypes is deprecated - allow it only for apps with
+ // networkingPrivate permissions.
+ if (!HasPrivateNetworkingAccess(extension(), source_context_type(),
+ source_url())) {
+ return RespondNow(Error(kPrivateOnlyError));
+ }
+
std::unique_ptr<base::ListValue> enabled_networks_onc_types(
GetDelegate(browser_context())->GetEnabledNetworkTypes());
if (!enabled_networks_onc_types)
@@ -515,6 +543,14 @@ NetworkingPrivateVerifyDestinationFunction::
}
bool NetworkingPrivateVerifyDestinationFunction::RunAsync() {
+ // TODO(tbarzic): Consider exposing this via separate API.
+ // http://crbug.com/678737
+ if (!HasPrivateNetworkingAccess(extension(), source_context_type(),
+ source_url())) {
+ error_ = kPrivateOnlyError;
+ return false;
+ }
+
std::unique_ptr<private_api::VerifyDestination::Params> params =
private_api::VerifyDestination::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params);
@@ -548,6 +584,13 @@ NetworkingPrivateVerifyAndEncryptCredentialsFunction::
}
bool NetworkingPrivateVerifyAndEncryptCredentialsFunction::RunAsync() {
+ // TODO(tbarzic): Consider exposing this via separate API.
+ // http://crbug.com/678737
+ if (!HasPrivateNetworkingAccess(extension(), source_context_type(),
+ source_url())) {
+ error_ = kPrivateOnlyError;
+ return false;
+ }
std::unique_ptr<private_api::VerifyAndEncryptCredentials::Params> params =
private_api::VerifyAndEncryptCredentials::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params);
@@ -584,6 +627,13 @@ NetworkingPrivateVerifyAndEncryptDataFunction::
}
bool NetworkingPrivateVerifyAndEncryptDataFunction::RunAsync() {
+ // TODO(tbarzic): Consider exposing this via separate API.
+ // http://crbug.com/678737
+ if (!HasPrivateNetworkingAccess(extension(), source_context_type(),
+ source_url())) {
+ error_ = kPrivateOnlyError;
+ return false;
+ }
std::unique_ptr<private_api::VerifyAndEncryptData::Params> params =
private_api::VerifyAndEncryptData::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params);
@@ -618,6 +668,13 @@ NetworkingPrivateSetWifiTDLSEnabledStateFunction::
}
bool NetworkingPrivateSetWifiTDLSEnabledStateFunction::RunAsync() {
+ // TODO(tbarzic): Consider exposing this via separate API.
+ // http://crbug.com/678737
+ if (!HasPrivateNetworkingAccess(extension(), source_context_type(),
+ source_url())) {
+ error_ = kPrivateOnlyError;
+ return false;
+ }
std::unique_ptr<private_api::SetWifiTDLSEnabledState::Params> params =
private_api::SetWifiTDLSEnabledState::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params);
@@ -653,6 +710,13 @@ NetworkingPrivateGetWifiTDLSStatusFunction::
}
bool NetworkingPrivateGetWifiTDLSStatusFunction::RunAsync() {
+ // TODO(tbarzic): Consider exposing this via separate API.
+ // http://crbug.com/678737
+ if (!HasPrivateNetworkingAccess(extension(), source_context_type(),
+ source_url())) {
+ error_ = kPrivateOnlyError;
+ return false;
+ }
std::unique_ptr<private_api::GetWifiTDLSStatus::Params> params =
private_api::GetWifiTDLSStatus::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params);

Powered by Google App Engine
This is Rietveld 408576698