1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_UI_WEBUI_COLLECTED_COOKIES_UI_DELEGATE_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_UI_WEBUI_COLLECTED_COOKIES_UI_DELEGATE_H_ 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <string> 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <vector> 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/webui/cookies_tree_model_adapter.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/webui/html_dialog_ui.h" 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/content_settings.h" 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_observer.h" 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_registrar.h" 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass GURL; 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass TabContents; 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace gfx { 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Size; 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass CollectedCookiesUIDelegate : public HtmlDialogUIDelegate, 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebUIMessageHandler, 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NotificationObserver { 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~CollectedCookiesUIDelegate(); 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // static factory method that shows CollectedCookiesUI for |tab_contents|. 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static void Show(TabContents* tab_contents); 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // HtmlDialogUIDelegate implementation: 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual bool IsDialogModal() const; 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual std::wstring GetDialogTitle() const; 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual GURL GetDialogContentURL() const; 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void GetWebUIMessageHandlers( 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<WebUIMessageHandler*>* handlers) const; 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void GetDialogSize(gfx::Size* size) const; 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual std::string GetDialogArgs() const; 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnDialogClosed(const std::string& json_retval); 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnCloseContents(TabContents* source, bool* out_close_dialog) {} 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual bool ShouldShowDialogTitle() const; 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // WebUIMessageHandler implementation: 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void RegisterMessages(); 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen explicit CollectedCookiesUIDelegate(TabContents* tab_contents); 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Closes the dialog from javascript. 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void CloseDialog(); 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Sets infobar label text. 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void SetInfobarLabel(const std::string& text); 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Add content exception. 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void AddContentException(CookieTreeOriginNode* origin_node, 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ContentSetting setting); 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Notification Observer implementation. 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void Observe(NotificationType type, 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const NotificationSource& source, 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const NotificationDetails& details); 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // JS callback to bind cookies tree models with JS trees. 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void BindCookiesTreeModel(const ListValue* args); 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // JS callback to block/allow cookies from given site. 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void Block(const ListValue* args); 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void Allow(const ListValue* args); 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void AllowThisSession(const ListValue* args); 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NotificationRegistrar registrar_; 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TabContents* tab_contents_; 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool closed_; 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<CookiesTreeModel> allowed_cookies_tree_model_; 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<CookiesTreeModel> blocked_cookies_tree_model_; 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CookiesTreeModelAdapter allowed_cookies_adapter_; 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CookiesTreeModelAdapter blocked_cookies_adapter_; 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DISALLOW_COPY_AND_ASSIGN(CollectedCookiesUIDelegate); 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_UI_WEBUI_COLLECTED_COOKIES_UI_DELEGATE_H_ 90