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

Unified Diff: ui/web_dialogs/constrained_web_dialog_ui.cc

Issue 10831407: Kill PropertyBag, switch WebContents to SupportsUserData. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase only Created 8 years, 4 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
« no previous file with comments | « ui/web_dialogs/constrained_web_dialog_ui.h ('k') | ui/web_dialogs/web_dialog_ui.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/web_dialogs/constrained_web_dialog_ui.cc
diff --git a/ui/web_dialogs/constrained_web_dialog_ui.cc b/ui/web_dialogs/constrained_web_dialog_ui.cc
index 13a40abb0a17c4db5075a397ae1f00970ce95f41..b14b5cab7b846bdf10634a486797c8fc76356ac7 100644
--- a/ui/web_dialogs/constrained_web_dialog_ui.cc
+++ b/ui/web_dialogs/constrained_web_dialog_ui.cc
@@ -10,7 +10,6 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/lazy_instance.h"
-#include "base/property_bag.h"
#include "base/values.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_view_host.h"
@@ -23,12 +22,30 @@ using content::RenderViewHost;
using content::WebContents;
using content::WebUIMessageHandler;
-static base::LazyInstance<
- base::PropertyAccessor<ui::ConstrainedWebDialogDelegate*> >
- g_constrained_web_dialog_ui_property_accessor = LAZY_INSTANCE_INITIALIZER;
-
namespace ui {
+namespace {
+
+const char kConstrainedWebDialogDelegateUserDataKey[] =
+ "ConstrainedWebDialogDelegateUserData";
+
+class ConstrainedWebDialogDelegateUserData
+ : public base::SupportsUserData::Data {
+ public:
+ explicit ConstrainedWebDialogDelegateUserData(
+ ConstrainedWebDialogDelegate* delegate) : delegate_(delegate) {}
+ virtual ~ConstrainedWebDialogDelegateUserData() {}
+
+ ConstrainedWebDialogDelegate* delegate() { return delegate_; }
+
+ private:
+ ConstrainedWebDialogDelegate* delegate_; // unowned
+
+ DISALLOW_COPY_AND_ASSIGN(ConstrainedWebDialogDelegateUserData);
+};
+
+} // namespace
+
ConstrainedWebDialogUI::ConstrainedWebDialogUI(content::WebUI* web_ui)
: WebUIController(web_ui) {
}
@@ -72,16 +89,21 @@ void ConstrainedWebDialogUI::OnDialogCloseMessage(const ListValue* args) {
delegate->OnDialogCloseFromWebUI();
}
-ConstrainedWebDialogDelegate* ConstrainedWebDialogUI::GetConstrainedDelegate() {
- ConstrainedWebDialogDelegate** property = GetPropertyAccessor().GetProperty(
- web_ui()->GetWebContents()->GetPropertyBag());
- return property ? *property : NULL;
+// static
+void ConstrainedWebDialogUI::SetConstrainedDelegate(
+ content::WebContents* web_contents,
+ ConstrainedWebDialogDelegate* delegate) {
+ web_contents->SetUserData(&kConstrainedWebDialogDelegateUserDataKey,
+ new ConstrainedWebDialogDelegateUserData(delegate));
}
-// static
-base::PropertyAccessor<ConstrainedWebDialogDelegate*>&
- ConstrainedWebDialogUI::GetPropertyAccessor() {
- return g_constrained_web_dialog_ui_property_accessor.Get();
+ConstrainedWebDialogDelegate* ConstrainedWebDialogUI::GetConstrainedDelegate() {
+ ConstrainedWebDialogDelegateUserData* user_data =
+ static_cast<ConstrainedWebDialogDelegateUserData*>(
+ web_ui()->GetWebContents()->
+ GetUserData(&kConstrainedWebDialogDelegateUserDataKey));
+
+ return user_data ? user_data->delegate() : NULL;
}
} // namespace ui
« no previous file with comments | « ui/web_dialogs/constrained_web_dialog_ui.h ('k') | ui/web_dialogs/web_dialog_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698