// Copyright (c) 2011 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 CHROME_FRAME_NAVIGATION_CONSTRAINTS_H_ #define CHROME_FRAME_NAVIGATION_CONSTRAINTS_H_ #include <urlmon.h> #include <windows.h> #include "base/win/scoped_comptr.h" #include "url/gurl.h" // Provides an interface which controls navigation within ChromeFrame. class NavigationConstraints { public: virtual ~NavigationConstraints() {} virtual bool AllowUnsafeUrls() = 0; virtual bool IsSchemeAllowed(const GURL& url) = 0; virtual bool IsZoneAllowed(const GURL& url) = 0; }; // Provides default implementation for the NavigationConstraints interface. class NavigationConstraintsImpl : public NavigationConstraints { public: NavigationConstraintsImpl(); virtual ~NavigationConstraintsImpl() {} // NavigationConstraints method overrides. virtual bool AllowUnsafeUrls(); virtual bool IsSchemeAllowed(const GURL& url); virtual bool IsZoneAllowed(const GURL& url); bool is_privileged() const; void set_is_privileged(bool is_privileged); private: base::win::ScopedComPtr<IInternetSecurityManager> security_manager_; // The plugin is privileged if it is: // * Being hosted by a custom host exposing the SID_ChromeFramePrivileged // service. // // When privileged, additional interfaces are made available to the user. bool is_privileged_; }; #endif // CHROME_FRAME_NAVIGATION_CONSTRAINTS_H_