15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef EXTENSIONS_COMMON_MANIFEST_HANDLERS_WEBVIEW_INFO_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define EXTENSIONS_COMMON_MANIFEST_HANDLERS_WEBVIEW_INFO_H_ 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <string> 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/scoped_vector.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/manifest_handler.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace extensions { 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PartitionItem; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// A class to hold the <webview> accessible extension resources 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// that may be specified in the manifest of an extension using the 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// "webview" key. 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class WebviewInfo : public Extension::ManifestData { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Define out of line constructor/destructor to please Clang. 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebviewInfo(); 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~WebviewInfo(); 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Returns true if the specified resource is web accessible. 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static bool IsResourceWebviewAccessible(const Extension* extension, 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const std::string& partition_id, 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const std::string& relative_path); 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void AddPartitionItem(scoped_ptr<PartitionItem> item); 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScopedVector<PartitionItem> partition_items_; 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Parses the "webview" manifest key. 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class WebviewHandler : public ManifestHandler { 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebviewHandler(); 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~WebviewHandler(); 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE; 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private: 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual const std::vector<std::string> Keys() const OVERRIDE; 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WebviewHandler); 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace extensions 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // EXTENSIONS_COMMON_MANIFEST_HANDLERS_WEBVIEW_INFO_H_ 55