| Index: extensions/browser/api/web_request/web_request_api.cc
|
| diff --git a/extensions/browser/api/web_request/web_request_api.cc b/extensions/browser/api/web_request/web_request_api.cc
|
| index 829ebb512eb72d044537eb4afa30a5f800fcf704..5d408f78d4e7658cfd5631a1b557d7dd577211f1 100644
|
| --- a/extensions/browser/api/web_request/web_request_api.cc
|
| +++ b/extensions/browser/api/web_request/web_request_api.cc
|
| @@ -22,6 +22,7 @@
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/time/time.h"
|
| #include "base/values.h"
|
| +#include "chromeos/login/login_state.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/resource_request_info.h"
|
| #include "content/public/browser/user_metrics.h"
|
| @@ -338,6 +339,16 @@ bool ShouldHideEvent(void* browser_context,
|
| navigation_ui_data));
|
| }
|
|
|
| +// Returns true if we're in a Public Session.
|
| +bool IsPublicSession() {
|
| +#if defined(OS_CHROMEOS)
|
| + if (chromeos::LoginState::IsInitialized()) {
|
| + return chromeos::LoginState::Get()->IsPublicSessionUser();
|
| + }
|
| +#endif
|
| + return false;
|
| +}
|
| +
|
| } // namespace
|
|
|
| WebRequestAPI::WebRequestAPI(content::BrowserContext* context)
|
| @@ -2127,7 +2138,10 @@ WebRequestInternalAddEventListenerFunction::Run() {
|
| // http://www.example.com/bar/*.
|
| // For this reason we do only a coarse check here to warn the extension
|
| // developer if they do something obviously wrong.
|
| - if (extension->permissions_data()
|
| + // When we are in a Public Session, allow all URL's for webRequests
|
| + // initiated by a regular extension.
|
| + if (!(IsPublicSession() && extension->is_extension()) &&
|
| + extension->permissions_data()
|
| ->GetEffectiveHostPermissions()
|
| .is_empty() &&
|
| extension->permissions_data()
|
|
|