diff options
author | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-11 09:13:54 +0000 |
---|---|---|
committer | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-11 09:13:54 +0000 |
commit | 49ab556cfe14de363a74ce771931832304a1a038 (patch) | |
tree | 7703457c54a035f2eebe38babecaba12b6bfb975 /chrome/renderer | |
parent | 0310169705d607a78bc288e74038fe104b4474fd (diff) | |
download | chromium_src-49ab556cfe14de363a74ce771931832304a1a038.zip chromium_src-49ab556cfe14de363a74ce771931832304a1a038.tar.gz chromium_src-49ab556cfe14de363a74ce771931832304a1a038.tar.bz2 |
Make members of Singleton<T> private and only visible to the singleton type. This enforces that the Singleton<T> pattern can only be used within classes which want singleton-ness.
As part of this CL I have also fixed up files which got missed in my previous CLs to use a GetInstance() method and use Singleton<T> from the source file.
There are a small number of places where I have also switched to LazyInstance as that was more appropriate for types used in a single source file.
BUG=65298
TEST=all existing tests should continue to pass.
Review URL: http://codereview.chromium.org/5682008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68932 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/extensions/bindings_utils.cc | 10 | ||||
-rw-r--r-- | chrome/renderer/extensions/renderer_extension_bindings.cc | 13 | ||||
-rw-r--r-- | chrome/renderer/ggl/ggl.cc | 8 | ||||
-rw-r--r-- | chrome/renderer/render_view.cc | 13 |
4 files changed, 28 insertions, 16 deletions
diff --git a/chrome/renderer/extensions/bindings_utils.cc b/chrome/renderer/extensions/bindings_utils.cc index 5b213c4..4776966 100644 --- a/chrome/renderer/extensions/bindings_utils.cc +++ b/chrome/renderer/extensions/bindings_utils.cc @@ -4,6 +4,7 @@ #include "chrome/renderer/extensions/bindings_utils.h" +#include "base/lazy_instance.h" #include "base/string_split.h" #include "base/string_util.h" #include "chrome/renderer/render_view.h" @@ -21,11 +22,14 @@ struct SingletonData { ContextList contexts; PendingRequestMap pending_requests; }; +static base::LazyInstance<SingletonData> g_singleton_data( + base::LINKER_INITIALIZED); typedef std::map<int, std::string> StringMap; +static base::LazyInstance<StringMap> g_string_map(base::LINKER_INITIALIZED); const char* GetStringResource(int resource_id) { - StringMap* strings = Singleton<StringMap>::get(); + StringMap* strings = g_string_map.Pointer(); StringMap::iterator it = strings->find(resource_id); if (it == strings->end()) { it = strings->insert(std::make_pair( @@ -84,7 +88,7 @@ ContextInfo::ContextInfo(v8::Persistent<v8::Context> context, ContextInfo::~ContextInfo() {} ContextList& GetContexts() { - return Singleton<SingletonData>::get()->contexts; + return g_singleton_data.Get().contexts; } ContextList GetContextsForExtension(const std::string& extension_id) { @@ -134,7 +138,7 @@ ContextList::iterator FindContext(v8::Handle<v8::Context> context) { } PendingRequestMap& GetPendingRequestMap() { - return Singleton<SingletonData>::get()->pending_requests; + return g_singleton_data.Get().pending_requests; } RenderView* GetRenderViewForCurrentContext() { diff --git a/chrome/renderer/extensions/renderer_extension_bindings.cc b/chrome/renderer/extensions/renderer_extension_bindings.cc index 9555672..ab7a8eb 100644 --- a/chrome/renderer/extensions/renderer_extension_bindings.cc +++ b/chrome/renderer/extensions/renderer_extension_bindings.cc @@ -8,7 +8,7 @@ #include <string> #include "base/basictypes.h" -#include "base/singleton.h" +#include "base/lazy_instance.h" #include "base/values.h" #include "chrome/common/extensions/extension_message_bundle.h" #include "chrome/common/render_messages.h" @@ -43,17 +43,20 @@ struct ExtensionData { std::map<int, PortData> ports; // port ID -> data }; +static base::LazyInstance<ExtensionData> g_extension_data( + base::LINKER_INITIALIZED); + static bool HasPortData(int port_id) { - return Singleton<ExtensionData>::get()->ports.find(port_id) != - Singleton<ExtensionData>::get()->ports.end(); + return g_extension_data.Get().ports.find(port_id) != + g_extension_data.Get().ports.end(); } static ExtensionData::PortData& GetPortData(int port_id) { - return Singleton<ExtensionData>::get()->ports[port_id]; + return g_extension_data.Get().ports[port_id]; } static void ClearPortData(int port_id) { - Singleton<ExtensionData>::get()->ports.erase(port_id); + g_extension_data.Get().ports.erase(port_id); } const char kPortClosedError[] = "Attempting to use a disconnected port object"; diff --git a/chrome/renderer/ggl/ggl.cc b/chrome/renderer/ggl/ggl.cc index 577e853..c95bbb5 100644 --- a/chrome/renderer/ggl/ggl.cc +++ b/chrome/renderer/ggl/ggl.cc @@ -4,8 +4,8 @@ #include "build/build_config.h" +#include "base/lazy_instance.h" #include "base/ref_counted.h" -#include "base/singleton.h" #include "base/weak_ptr.h" #include "chrome/renderer/command_buffer_proxy.h" #include "chrome/renderer/ggl/ggl.h" @@ -48,6 +48,10 @@ class GLES2Initializer { private: DISALLOW_COPY_AND_ASSIGN(GLES2Initializer); }; + +static base::LazyInstance<GLES2Initializer> g_gles2_initializer( + base::LINKER_INITIALIZED); + } // namespace anonymous // Manages a GL context. @@ -163,7 +167,7 @@ bool Context::Initialize(gfx::NativeViewId view, return false; // Ensure the gles2 library is initialized first in a thread safe way. - Singleton<GLES2Initializer>::get(); + g_gles2_initializer.Get(); // Allocate a frame buffer ID with respect to the parent. if (parent_.get()) { diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index e29e30a..ca29c0a 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -15,10 +15,10 @@ #include "base/callback.h" #include "base/command_line.h" #include "base/compiler_specific.h" +#include "base/lazy_instance.h" #include "base/metrics/histogram.h" #include "base/path_service.h" #include "base/process_util.h" -#include "base/singleton.h" #include "base/string_piece.h" #include "base/string_util.h" #include "base/sys_string_conversions.h" @@ -277,6 +277,7 @@ using webkit_glue::WebAccessibility; //----------------------------------------------------------------------------- typedef std::map<WebKit::WebView*, RenderView*> ViewMap; +static base::LazyInstance<ViewMap> g_view_map(base::LINKER_INITIALIZED); // define to write the time necessary for thumbnail/DOM text retrieval, // respectively, into the system debug log @@ -615,7 +616,7 @@ RenderView::~RenderView() { #ifndef NDEBUG // Make sure we are no longer referenced by the ViewMap. - ViewMap* views = Singleton<ViewMap>::get(); + ViewMap* views = g_view_map.Pointer(); for (ViewMap::iterator it = views->begin(); it != views->end(); ++it) DCHECK_NE(this, it->second) << "Failed to call Close?"; #endif @@ -623,7 +624,7 @@ RenderView::~RenderView() { /*static*/ void RenderView::ForEach(RenderViewVisitor* visitor) { - ViewMap* views = Singleton<ViewMap>::get(); + ViewMap* views = g_view_map.Pointer(); for (ViewMap::iterator it = views->begin(); it != views->end(); ++it) { if (!visitor->Visit(it->second)) return; @@ -632,7 +633,7 @@ void RenderView::ForEach(RenderViewVisitor* visitor) { /*static*/ RenderView* RenderView::FromWebView(WebView* webview) { - ViewMap* views = Singleton<ViewMap>::get(); + ViewMap* views = g_view_map.Pointer(); ViewMap::iterator it = views->find(webview); return it == views->end() ? NULL : it->second; } @@ -895,7 +896,7 @@ void RenderView::Init(gfx::NativeViewId parent_hwnd, devtools_agent_.reset(new DevToolsAgent(routing_id, this)); webwidget_ = WebView::create(this, devtools_agent_.get()); - Singleton<ViewMap>::get()->insert(std::make_pair(webview(), this)); + g_view_map.Get().insert(std::make_pair(webview(), this)); webkit_preferences_.Apply(webview()); webview()->initializeMainFrame(this); if (!frame_name.empty()) @@ -5447,7 +5448,7 @@ void RenderView::Close() { // We need to grab a pointer to the doomed WebView before we destroy it. WebView* doomed = webview(); RenderWidget::Close(); - Singleton<ViewMap>::get()->erase(doomed); + g_view_map.Get().erase(doomed); } void RenderView::DidHandleKeyEvent() { |