summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-25 18:48:03 +0000
committerrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-25 18:48:03 +0000
commit26fbf80ccd8269a6227a7124e9563283da85551a (patch)
tree69fef8a1cea0ac6d5e78322e18033091860d46a6 /base
parent90509cbdde392aa218771f6673b9b5a6600c2b57 (diff)
downloadchromium_src-26fbf80ccd8269a6227a7124e9563283da85551a.zip
chromium_src-26fbf80ccd8269a6227a7124e9563283da85551a.tar.gz
chromium_src-26fbf80ccd8269a6227a7124e9563283da85551a.tar.bz2
Base: A few more files using BASE_API (for base.dll)
BUG=76996 TEST=none Review URL: http://codereview.chromium.org/6736019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79427 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/debug/debug_on_start_win.h7
-rw-r--r--base/debug/debugger.h16
-rw-r--r--base/debug/stack_trace.h5
-rw-r--r--base/message_loop.h12
-rw-r--r--base/message_loop_proxy.h6
-rw-r--r--base/message_loop_proxy_impl.h7
-rw-r--r--base/message_pump.h7
-rw-r--r--base/message_pump_win.h7
-rw-r--r--base/metrics/histogram.h13
-rw-r--r--base/metrics/stats_counters.h9
-rw-r--r--base/metrics/stats_table.h3
-rw-r--r--base/native_library.h16
-rw-r--r--base/process.h5
-rw-r--r--base/process_util.h111
-rw-r--r--base/scoped_native_library.h5
-rw-r--r--base/sys_info.h5
-rw-r--r--base/threading/thread.h3
-rw-r--r--base/timer.h5
-rw-r--r--base/tracked_objects.h17
-rw-r--r--base/vlog.h9
-rw-r--r--base/weak_ptr.h9
21 files changed, 156 insertions, 121 deletions
diff --git a/base/debug/debug_on_start_win.h b/base/debug/debug_on_start_win.h
index 5a1081d..4a5c120 100644
--- a/base/debug/debug_on_start_win.h
+++ b/base/debug/debug_on_start_win.h
@@ -24,6 +24,11 @@
namespace base {
namespace debug {
+// There is no way for this code, as currently implemented, to work across DLLs.
+// TODO(rvargas): It looks like we really don't use this code, at least not for
+// Chrome. Figure out if it's really worth implementing something simpler.
+#if !defined(BASE_DLL)
+
// Debug on start functions and data.
class DebugOnStart {
public:
@@ -69,6 +74,8 @@ DECLSPEC_SELECTANY DebugOnStart::PIFV debug_on_start = &DebugOnStart::Init;
#endif // _WIN64
+#endif // defined(BASE_DLL)
+
} // namespace debug
} // namespace base
diff --git a/base/debug/debugger.h b/base/debug/debugger.h
index 77bde0d..bb937a0 100644
--- a/base/debug/debugger.h
+++ b/base/debug/debugger.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -10,16 +10,18 @@
#define BASE_DEBUG_DEBUGGER_H
#pragma once
+#include "base/base_api.h"
+
namespace base {
namespace debug {
// Starts the registered system-wide JIT debugger to attach it to specified
// process.
-bool SpawnDebuggerOnProcess(unsigned process_id);
+BASE_API bool SpawnDebuggerOnProcess(unsigned process_id);
// Waits wait_seconds seconds for a debugger to attach to the current process.
// When silent is false, an exception is thrown when a debugger is detected.
-bool WaitForDebugger(int wait_seconds, bool silent);
+BASE_API bool WaitForDebugger(int wait_seconds, bool silent);
// Returns true if the given process is being run under a debugger.
//
@@ -28,18 +30,18 @@ bool WaitForDebugger(int wait_seconds, bool silent);
//
// WARNING: Because of this, on OS X, a call MUST be made to this function
// BEFORE the sandbox is enabled.
-bool BeingDebugged();
+BASE_API bool BeingDebugged();
// Break into the debugger, assumes a debugger is present.
-void BreakDebugger();
+BASE_API void BreakDebugger();
// Used in test code, this controls whether showing dialogs and breaking into
// the debugger is suppressed for debug errors, even in debug mode (normally
// release mode doesn't do this stuff -- this is controlled separately).
// Normally UI is not suppressed. This is normally used when running automated
// tests where we want a crash rather than a dialog or a debugger.
-void SetSuppressDebugUI(bool suppress);
-bool IsDebugUISuppressed();
+BASE_API void SetSuppressDebugUI(bool suppress);
+BASE_API bool IsDebugUISuppressed();
} // namespace debug
} // namespace base
diff --git a/base/debug/stack_trace.h b/base/debug/stack_trace.h
index 8afc32c..d8d792d 100644
--- a/base/debug/stack_trace.h
+++ b/base/debug/stack_trace.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -8,6 +8,7 @@
#include <iosfwd>
+#include "base/base_api.h"
#include "build/build_config.h"
#if defined(OS_WIN)
@@ -20,7 +21,7 @@ namespace debug {
// A stacktrace can be helpful in debugging. For example, you can include a
// stacktrace member in a object (probably around #ifndef NDEBUG) so that you
// can later see where the given object was created from.
-class StackTrace {
+class BASE_API StackTrace {
public:
// Creates a stacktrace from the current location.
StackTrace();
diff --git a/base/message_loop.h b/base/message_loop.h
index e3653f9..fea7e39 100644
--- a/base/message_loop.h
+++ b/base/message_loop.h
@@ -9,6 +9,7 @@
#include <queue>
#include <string>
+#include "base/base_api.h"
#include "base/basictypes.h"
#include "base/message_pump.h"
#include "base/observer_list.h"
@@ -65,7 +66,7 @@ class Histogram;
// Please be SURE your task is reentrant (nestable) and all global variables
// are stable and accessible before calling SetNestableTasksAllowed(true).
//
-class MessageLoop : public base::MessagePump::Delegate {
+class BASE_API MessageLoop : public base::MessagePump::Delegate {
public:
#if defined(OS_WIN)
typedef base::MessagePumpWin::Dispatcher Dispatcher;
@@ -117,7 +118,7 @@ class MessageLoop : public base::MessagePump::Delegate {
// NOTE: Any tasks posted to the MessageLoop during this notification will
// not be run. Instead, they will be deleted.
//
- class DestructionObserver {
+ class BASE_API DestructionObserver {
public:
virtual void WillDestroyCurrentMessageLoop() = 0;
@@ -283,7 +284,7 @@ class MessageLoop : public base::MessagePump::Delegate {
// MessageLoop.
//
// NOTE: A TaskObserver implementation should be extremely fast!
- class TaskObserver {
+ class BASE_API TaskObserver {
public:
TaskObserver();
@@ -496,6 +497,7 @@ class MessageLoop : public base::MessagePump::Delegate {
ObserverList<TaskObserver> task_observers_;
+ private:
DISALLOW_COPY_AND_ASSIGN(MessageLoop);
};
@@ -506,7 +508,7 @@ class MessageLoop : public base::MessagePump::Delegate {
// This class is typically used like so:
// MessageLoopForUI::current()->...call some method...
//
-class MessageLoopForUI : public MessageLoop {
+class BASE_API MessageLoopForUI : public MessageLoop {
public:
MessageLoopForUI() : MessageLoop(TYPE_UI) {
}
@@ -562,7 +564,7 @@ COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForUI),
// This class is typically used like so:
// MessageLoopForIO::current()->...call some method...
//
-class MessageLoopForIO : public MessageLoop {
+class BASE_API MessageLoopForIO : public MessageLoop {
public:
#if defined(OS_WIN)
typedef base::MessagePumpForIO::IOHandler IOHandler;
diff --git a/base/message_loop_proxy.h b/base/message_loop_proxy.h
index 6a8cbe8..9ab0b8a 100644
--- a/base/message_loop_proxy.h
+++ b/base/message_loop_proxy.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -6,6 +6,7 @@
#define BASE_MESSAGE_LOOP_PROXY_H_
#pragma once
+#include "base/base_api.h"
#include "base/basictypes.h"
#include "base/ref_counted.h"
#include "base/task.h"
@@ -18,7 +19,7 @@ struct MessageLoopProxyTraits;
// of a message loop. This class can outlive the target message loop. You can
// obtain a MessageLoopProxy via Thread::message_loop_proxy() or
// MessageLoopProxy::CreateForCurrentThread().
-class MessageLoopProxy
+class BASE_API MessageLoopProxy
: public base::RefCountedThreadSafe<MessageLoopProxy,
MessageLoopProxyTraits> {
public:
@@ -58,6 +59,7 @@ class MessageLoopProxy
static scoped_refptr<MessageLoopProxy> CreateForCurrentThread();
protected:
+ friend class RefCountedThreadSafe<MessageLoopProxy, MessageLoopProxyTraits>;
friend struct MessageLoopProxyTraits;
MessageLoopProxy();
diff --git a/base/message_loop_proxy_impl.h b/base/message_loop_proxy_impl.h
index 03e0271..80d9a26 100644
--- a/base/message_loop_proxy_impl.h
+++ b/base/message_loop_proxy_impl.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -6,6 +6,7 @@
#define BASE_MESSAGE_LOOP_PROXY_IMPL_H_
#pragma once
+#include "base/base_api.h"
#include "base/message_loop.h"
#include "base/message_loop_proxy.h"
#include "base/synchronization/lock.h"
@@ -15,8 +16,8 @@ namespace base {
// A stock implementation of MessageLoopProxy that takes in a MessageLoop
// and keeps track of its lifetime using the MessageLoop DestructionObserver.
// For now a MessageLoopProxyImpl can only be created for the current thread.
-class MessageLoopProxyImpl : public MessageLoopProxy,
- public MessageLoop::DestructionObserver {
+class BASE_API MessageLoopProxyImpl : public MessageLoopProxy,
+ public MessageLoop::DestructionObserver {
public:
virtual ~MessageLoopProxyImpl();
diff --git a/base/message_pump.h b/base/message_pump.h
index 866b33a..a356cf3 100644
--- a/base/message_pump.h
+++ b/base/message_pump.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// 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.
@@ -6,17 +6,18 @@
#define BASE_MESSAGE_PUMP_H_
#pragma once
+#include "base/base_api.h"
#include "base/ref_counted.h"
namespace base {
class TimeTicks;
-class MessagePump : public RefCountedThreadSafe<MessagePump> {
+class BASE_API MessagePump : public RefCountedThreadSafe<MessagePump> {
public:
// Please see the comments above the Run method for an illustration of how
// these delegate methods are used.
- class Delegate {
+ class BASE_API Delegate {
public:
virtual ~Delegate() {}
diff --git a/base/message_pump_win.h b/base/message_pump_win.h
index af97530..5642220 100644
--- a/base/message_pump_win.h
+++ b/base/message_pump_win.h
@@ -10,6 +10,7 @@
#include <list>
+#include "base/base_api.h"
#include "base/basictypes.h"
#include "base/message_pump.h"
#include "base/observer_list.h"
@@ -21,7 +22,7 @@ namespace base {
// MessagePumpWin serves as the base for specialized versions of the MessagePump
// for Windows. It provides basic functionality like handling of observers and
// controlling the lifetime of the message pump.
-class MessagePumpWin : public MessagePump {
+class BASE_API MessagePumpWin : public MessagePump {
public:
// An Observer is an object that receives global notifications from the
// UI MessageLoop.
@@ -156,7 +157,7 @@ class MessagePumpWin : public MessagePump {
// an excellent choice. It is also helpful that the starter messages that are
// placed in the queue when new task arrive also awakens DoRunLoop.
//
-class MessagePumpForUI : public MessagePumpWin {
+class BASE_API MessagePumpForUI : public MessagePumpWin {
public:
// The application-defined code passed to the hook procedure.
static const int kMessageFilterCode = 0x5001;
@@ -195,7 +196,7 @@ class MessagePumpForUI : public MessagePumpWin {
// deal with Windows mesagges, and instead has a Run loop based on Completion
// Ports so it is better suited for IO operations.
//
-class MessagePumpForIO : public MessagePumpWin {
+class BASE_API MessagePumpForIO : public MessagePumpWin {
public:
struct IOContext;
diff --git a/base/metrics/histogram.h b/base/metrics/histogram.h
index bbc7d56..aab39be 100644
--- a/base/metrics/histogram.h
+++ b/base/metrics/histogram.h
@@ -36,6 +36,7 @@
#include <string>
#include <vector>
+#include "base/base_api.h"
#include "base/gtest_prod_util.h"
#include "base/ref_counted.h"
#include "base/logging.h"
@@ -236,7 +237,7 @@ class CustomHistogram;
class Histogram;
class LinearHistogram;
-class Histogram : public base::RefCountedThreadSafe<Histogram> {
+class BASE_API Histogram : public base::RefCountedThreadSafe<Histogram> {
public:
typedef int Sample; // Used for samples (and ranges of samples).
typedef int Count; // Used to count samples in a bucket.
@@ -295,7 +296,7 @@ class Histogram : public base::RefCountedThreadSafe<Histogram> {
//----------------------------------------------------------------------------
// Statistic values, developed over the life of the histogram.
- class SampleSet {
+ class BASE_API SampleSet {
public:
explicit SampleSet();
~SampleSet();
@@ -548,7 +549,7 @@ class Histogram : public base::RefCountedThreadSafe<Histogram> {
// LinearHistogram is a more traditional histogram, with evenly spaced
// buckets.
-class LinearHistogram : public Histogram {
+class BASE_API LinearHistogram : public Histogram {
public:
virtual ~LinearHistogram();
@@ -599,7 +600,7 @@ class LinearHistogram : public Histogram {
//------------------------------------------------------------------------------
// BooleanHistogram is a histogram for booleans.
-class BooleanHistogram : public LinearHistogram {
+class BASE_API BooleanHistogram : public LinearHistogram {
public:
static scoped_refptr<Histogram> FactoryGet(const std::string& name,
Flags flags);
@@ -617,7 +618,7 @@ class BooleanHistogram : public LinearHistogram {
//------------------------------------------------------------------------------
// CustomHistogram is a histogram for a set of custom integers.
-class CustomHistogram : public Histogram {
+class BASE_API CustomHistogram : public Histogram {
public:
static scoped_refptr<Histogram> FactoryGet(const std::string& name,
@@ -642,7 +643,7 @@ class CustomHistogram : public Histogram {
// general place for histograms to register, and supports a global API for
// accessing (i.e., dumping, or graphing) the data in all the histograms.
-class StatisticsRecorder {
+class BASE_API StatisticsRecorder {
public:
typedef std::vector<scoped_refptr<Histogram> > Histograms;
diff --git a/base/metrics/stats_counters.h b/base/metrics/stats_counters.h
index 4a93a41..f40dcbe 100644
--- a/base/metrics/stats_counters.h
+++ b/base/metrics/stats_counters.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -8,6 +8,7 @@
#include <string>
+#include "base/base_api.h"
#include "base/metrics/stats_table.h"
#include "base/time.h"
@@ -74,7 +75,7 @@ namespace base {
//------------------------------------------------------------------------------
// StatsCounter represents a counter in the StatsTable class.
-class StatsCounter {
+class BASE_API StatsCounter {
public:
// Create a StatsCounter object.
explicit StatsCounter(const std::string& name);
@@ -128,7 +129,7 @@ class StatsCounter {
// A StatsCounterTimer is a StatsCounter which keeps a timer during
// the scope of the StatsCounterTimer. On destruction, it will record
// its time measurement.
-class StatsCounterTimer : protected StatsCounter {
+class BASE_API StatsCounterTimer : protected StatsCounter {
public:
// Constructs and starts the timer.
explicit StatsCounterTimer(const std::string& name);
@@ -157,7 +158,7 @@ class StatsCounterTimer : protected StatsCounter {
// A StatsRate is a timer that keeps a count of the number of intervals added so
// that several statistics can be produced:
// min, max, avg, count, total
-class StatsRate : public StatsCounterTimer {
+class BASE_API StatsRate : public StatsCounterTimer {
public:
// Constructs and starts the timer.
explicit StatsRate(const std::string& name);
diff --git a/base/metrics/stats_table.h b/base/metrics/stats_table.h
index 94f7463..c8ebae7 100644
--- a/base/metrics/stats_table.h
+++ b/base/metrics/stats_table.h
@@ -23,6 +23,7 @@
#include <string>
+#include "base/base_api.h"
#include "base/basictypes.h"
#include "base/hash_tables.h"
#include "base/synchronization/lock.h"
@@ -30,7 +31,7 @@
namespace base {
-class StatsTable {
+class BASE_API StatsTable {
public:
// Create a new StatsTable.
// If a StatsTable already exists with the specified name, this StatsTable
diff --git a/base/native_library.h b/base/native_library.h
index 6afd06d..9809c98 100644
--- a/base/native_library.h
+++ b/base/native_library.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// 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.
@@ -9,6 +9,7 @@
// This file defines a cross-platform "NativeLibrary" type which represents
// a loadable module.
+#include "base/base_api.h"
#include "build/build_config.h"
#if defined(OS_WIN)
@@ -52,7 +53,7 @@ typedef void* NativeLibrary;
// Loads a native library from disk. Release it with UnloadNativeLibrary when
// you're done.
-NativeLibrary LoadNativeLibrary(const FilePath& library_path);
+BASE_API NativeLibrary LoadNativeLibrary(const FilePath& library_path);
#if defined(OS_WIN)
// Loads a native library from disk. Release it with UnloadNativeLibrary when
@@ -60,21 +61,22 @@ NativeLibrary LoadNativeLibrary(const FilePath& library_path);
// This function retrieves the LoadLibrary function exported from kernel32.dll
// and calls it instead of directly calling the LoadLibrary function via the
// import table.
-NativeLibrary LoadNativeLibraryDynamically(const FilePath& library_path);
+BASE_API NativeLibrary LoadNativeLibraryDynamically(
+ const FilePath& library_path);
#endif // OS_WIN
// Unloads a native library.
-void UnloadNativeLibrary(NativeLibrary library);
+BASE_API void UnloadNativeLibrary(NativeLibrary library);
// Gets a function pointer from a native library.
-void* GetFunctionPointerFromNativeLibrary(NativeLibrary library,
- const char* name);
+BASE_API void* GetFunctionPointerFromNativeLibrary(NativeLibrary library,
+ const char* name);
// Returns the full platform specific name for a native library.
// For example:
// "mylib" returns "mylib.dll" on Windows, "libmylib.so" on Linux,
// "mylib.dylib" on Mac.
-string16 GetNativeLibraryName(const string16& name);
+BASE_API string16 GetNativeLibraryName(const string16& name);
} // namespace base
diff --git a/base/process.h b/base/process.h
index 32f5131..a8837141 100644
--- a/base/process.h
+++ b/base/process.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// 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.
@@ -6,6 +6,7 @@
#define BASE_PROCESS_H_
#pragma once
+#include "base/base_api.h"
#include "base/basictypes.h"
#include "build/build_config.h"
@@ -37,7 +38,7 @@ const ProcessHandle kNullProcessHandle = 0;
const int kUnsetProcessPriority = 256;
#endif
-class Process {
+class BASE_API Process {
public:
Process() : process_(kNullProcessHandle) {
#if defined(OS_POSIX) && !defined(OS_MACOSX)
diff --git a/base/process_util.h b/base/process_util.h
index 725e04e..dac0635 100644
--- a/base/process_util.h
+++ b/base/process_util.h
@@ -131,14 +131,14 @@ enum TerminationStatus {
};
// Returns the id of the current process.
-ProcessId GetCurrentProcId();
+BASE_API ProcessId GetCurrentProcId();
// Returns the ProcessHandle of the current process.
-ProcessHandle GetCurrentProcessHandle();
+BASE_API ProcessHandle GetCurrentProcessHandle();
// Converts a PID to a process handle. This handle must be closed by
// CloseProcessHandle when you are done with it. Returns true on success.
-bool OpenProcessHandle(ProcessId pid, ProcessHandle* handle);
+BASE_API bool OpenProcessHandle(ProcessId pid, ProcessHandle* handle);
// Converts a PID to a process handle. On Windows the handle is opened
// with more access rights and must only be used by trusted code.
@@ -146,21 +146,21 @@ bool OpenProcessHandle(ProcessId pid, ProcessHandle* handle);
// on success.
// TODO(sanjeevr): Replace all calls to OpenPrivilegedProcessHandle with the
// more specific OpenProcessHandleWithAccess method and delete this.
-bool OpenPrivilegedProcessHandle(ProcessId pid, ProcessHandle* handle);
+BASE_API bool OpenPrivilegedProcessHandle(ProcessId pid, ProcessHandle* handle);
// Converts a PID to a process handle using the desired access flags. Use a
// combination of the kProcessAccess* flags defined above for |access_flags|.
-bool OpenProcessHandleWithAccess(ProcessId pid,
- uint32 access_flags,
- ProcessHandle* handle);
+BASE_API bool OpenProcessHandleWithAccess(ProcessId pid,
+ uint32 access_flags,
+ ProcessHandle* handle);
// Closes the process handle opened by OpenProcessHandle.
-void CloseProcessHandle(ProcessHandle process);
+BASE_API void CloseProcessHandle(ProcessHandle process);
// Returns the unique ID for the specified process. This is functionally the
// same as Windows' GetProcessId(), but works on versions of Windows before
// Win XP SP1 as well.
-ProcessId GetProcId(ProcessHandle process);
+BASE_API ProcessId GetProcId(ProcessHandle process);
#if defined(OS_LINUX)
// Returns the path to the executable of the given process.
@@ -200,7 +200,8 @@ enum IntegrityLevel {
// Determine the integrity level of the specified process. Returns false
// if the system does not support integrity levels (pre-Vista) or in the case
// of an underlying system failure.
-bool GetProcessIntegrityLevel(ProcessHandle process, IntegrityLevel *level);
+BASE_API bool GetProcessIntegrityLevel(ProcessHandle process,
+ IntegrityLevel *level);
// Runs the given application name with the given command line. Normally, the
// first command line argument should be the path to the process, and don't
@@ -216,15 +217,15 @@ bool GetProcessIntegrityLevel(ProcessHandle process, IntegrityLevel *level);
// stored there on a successful launch.
// NOTE: In this case, the caller is responsible for closing the handle so
// that it doesn't leak!
-bool LaunchApp(const std::wstring& cmdline,
- bool wait, bool start_hidden, ProcessHandle* process_handle);
+BASE_API bool LaunchApp(const std::wstring& cmdline,
+ bool wait, bool start_hidden,
+ ProcessHandle* process_handle);
// Same as LaunchApp, except allows the new process to inherit handles of the
// parent process.
-bool LaunchAppWithHandleInheritance(const std::wstring& cmdline,
- bool wait,
- bool start_hidden,
- ProcessHandle* process_handle);
+BASE_API bool LaunchAppWithHandleInheritance(const std::wstring& cmdline,
+ bool wait, bool start_hidden,
+ ProcessHandle* process_handle);
// Runs the given application name with the given command line as if the user
// represented by |token| had launched it. The caveats about |cmdline| and
@@ -236,15 +237,18 @@ bool LaunchAppWithHandleInheritance(const std::wstring& cmdline,
// To avoid hard to diagnose problems, this function internally loads the
// environment variables associated with the user and if this operation fails
// the entire call fails as well.
-bool LaunchAppAsUser(UserTokenHandle token, const std::wstring& cmdline,
- bool start_hidden, ProcessHandle* process_handle);
+BASE_API bool LaunchAppAsUser(UserTokenHandle token,
+ const std::wstring& cmdline,
+ bool start_hidden,
+ ProcessHandle* process_handle);
// Has the same behavior as LaunchAppAsUser, but offers the boolean option to
// use an empty string for the desktop name and a boolean for allowing the
// child process to inherit handles from its parent.
-bool LaunchAppAsUser(UserTokenHandle token, const std::wstring& cmdline,
- bool start_hidden, ProcessHandle* process_handle,
- bool empty_desktop_name, bool inherit_handles);
+BASE_API bool LaunchAppAsUser(UserTokenHandle token,
+ const std::wstring& cmdline,
+ bool start_hidden, ProcessHandle* process_handle,
+ bool empty_desktop_name, bool inherit_handles);
#elif defined(OS_POSIX)
@@ -292,14 +296,14 @@ char** AlterEnvironment(const environment_vector& changes,
// Executes the application specified by cl. This function delegates to one
// of the above two platform-specific functions.
-bool LaunchApp(const CommandLine& cl,
- bool wait, bool start_hidden, ProcessHandle* process_handle);
+BASE_API bool LaunchApp(const CommandLine& cl, bool wait, bool start_hidden,
+ ProcessHandle* process_handle);
// Executes the application specified by |cl| and wait for it to exit. Stores
// the output (stdout) in |output|. Redirects stderr to /dev/null. Returns true
// on success (application launched and exited cleanly, with exit code
// indicating success).
-bool GetAppOutput(const CommandLine& cl, std::string* output);
+BASE_API bool GetAppOutput(const CommandLine& cl, std::string* output);
#if defined(OS_POSIX)
// A restricted version of |GetAppOutput()| which (a) clears the environment,
@@ -323,22 +327,22 @@ class ProcessFilter {
// Returns the number of processes on the machine that are running from the
// given executable name. If filter is non-null, then only processes selected
// by the filter will be counted.
-int GetProcessCount(const FilePath::StringType& executable_name,
- const ProcessFilter* filter);
+BASE_API int GetProcessCount(const FilePath::StringType& executable_name,
+ const ProcessFilter* filter);
// Attempts to kill all the processes on the current machine that were launched
// from the given executable name, ending them with the given exit code. If
// filter is non-null, then only processes selected by the filter are killed.
// Returns true if all processes were able to be killed off, false if at least
// one couldn't be killed.
-bool KillProcesses(const FilePath::StringType& executable_name, int exit_code,
- const ProcessFilter* filter);
+BASE_API bool KillProcesses(const FilePath::StringType& executable_name,
+ int exit_code, const ProcessFilter* filter);
// Attempts to kill the process identified by the given process
// entry structure, giving it the specified exit code. If |wait| is true, wait
// for the process to be actually terminated before returning.
// Returns true if this is successful, false otherwise.
-bool KillProcess(ProcessHandle process, int exit_code, bool wait);
+BASE_API bool KillProcess(ProcessHandle process, int exit_code, bool wait);
#if defined(OS_POSIX)
// Attempts to kill the process group identified by |process_group_id|. Returns
@@ -347,7 +351,7 @@ bool KillProcessGroup(ProcessHandle process_group_id);
#endif
#if defined(OS_WIN)
-bool KillProcessById(ProcessId process_id, int exit_code, bool wait);
+BASE_API bool KillProcessById(ProcessId process_id, int exit_code, bool wait);
#endif
// Get the termination status of the process by interpreting the
@@ -358,38 +362,41 @@ bool KillProcessById(ProcessId process_id, int exit_code, bool wait);
// will only return a useful result the first time it is called after
// the child exits (because it will reap the child and the information
// will no longer be available).
-TerminationStatus GetTerminationStatus(ProcessHandle handle, int* exit_code);
+BASE_API TerminationStatus GetTerminationStatus(ProcessHandle handle,
+ int* exit_code);
// Waits for process to exit. On POSIX systems, if the process hasn't been
// signaled then puts the exit code in |exit_code|; otherwise it's considered
// a failure. On Windows |exit_code| is always filled. Returns true on success,
// and closes |handle| in any case.
-bool WaitForExitCode(ProcessHandle handle, int* exit_code);
+BASE_API bool WaitForExitCode(ProcessHandle handle, int* exit_code);
// Waits for process to exit. If it did exit within |timeout_milliseconds|,
// then puts the exit code in |exit_code|, closes |handle|, and returns true.
// In POSIX systems, if the process has been signaled then |exit_code| is set
// to -1. Returns false on failure (the caller is then responsible for closing
// |handle|).
-bool WaitForExitCodeWithTimeout(ProcessHandle handle, int* exit_code,
- int64 timeout_milliseconds);
+BASE_API bool WaitForExitCodeWithTimeout(ProcessHandle handle, int* exit_code,
+ int64 timeout_milliseconds);
// Wait for all the processes based on the named executable to exit. If filter
// is non-null, then only processes selected by the filter are waited on.
// Returns after all processes have exited or wait_milliseconds have expired.
// Returns true if all the processes exited, false otherwise.
-bool WaitForProcessesToExit(const FilePath::StringType& executable_name,
- int64 wait_milliseconds,
- const ProcessFilter* filter);
+BASE_API bool WaitForProcessesToExit(
+ const FilePath::StringType& executable_name,
+ int64 wait_milliseconds,
+ const ProcessFilter* filter);
// Wait for a single process to exit. Return true if it exited cleanly within
// the given time limit. On Linux |handle| must be a child process, however
// on Mac and Windows it can be any process.
-bool WaitForSingleProcess(ProcessHandle handle, int64 wait_milliseconds);
+BASE_API bool WaitForSingleProcess(ProcessHandle handle,
+ int64 wait_milliseconds);
// Returns true when |wait_milliseconds| have elapsed and the process
// is still running.
-bool CrashAwareSleep(ProcessHandle handle, int64 wait_milliseconds);
+BASE_API bool CrashAwareSleep(ProcessHandle handle, int64 wait_milliseconds);
// Waits a certain amount of time (can be 0) for all the processes with a given
// executable name to exit, then kills off any of them that are still around.
@@ -397,16 +404,16 @@ bool CrashAwareSleep(ProcessHandle handle, int64 wait_milliseconds);
// on. Killed processes are ended with the given exit code. Returns false if
// any processes needed to be killed, true if they all exited cleanly within
// the wait_milliseconds delay.
-bool CleanupProcesses(const FilePath::StringType& executable_name,
- int64 wait_milliseconds,
- int exit_code,
- const ProcessFilter* filter);
+BASE_API bool CleanupProcesses(const FilePath::StringType& executable_name,
+ int64 wait_milliseconds,
+ int exit_code,
+ const ProcessFilter* filter);
// This class provides a way to iterate through a list of processes on the
// current machine with a specified filter.
// To use, create an instance and then call NextProcessEntry() until it returns
// false.
-class ProcessIterator {
+class BASE_API ProcessIterator {
public:
typedef std::list<ProcessEntry> ProcessEntries;
@@ -456,7 +463,7 @@ class ProcessIterator {
// on the current machine that were started from the given executable
// name. To use, create an instance and then call NextProcessEntry()
// until it returns false.
-class NamedProcessIterator : public ProcessIterator {
+class BASE_API NamedProcessIterator : public ProcessIterator {
public:
NamedProcessIterator(const FilePath::StringType& executable_name,
const ProcessFilter* filter);
@@ -521,13 +528,13 @@ struct FreeMBytes {
};
// Convert a POSIX timeval to microseconds.
-int64 TimeValToMicroseconds(const struct timeval& tv);
+BASE_API int64 TimeValToMicroseconds(const struct timeval& tv);
// Provides performance metrics for a specified process (CPU usage, memory and
// IO counters). To use it, invoke CreateProcessMetrics() to get an instance
// for a specific process, then access the information with the different get
// methods.
-class ProcessMetrics {
+class BASE_API ProcessMetrics {
public:
~ProcessMetrics();
@@ -628,7 +635,7 @@ class ProcessMetrics {
// Returns the memory commited by the system in KBytes.
// Returns 0 if it can't compute the commit charge.
-size_t GetSystemCommitCharge();
+BASE_API size_t GetSystemCommitCharge();
// Enables low fragmentation heap (LFH) for every heaps of this process. This
// won't have any effect on heaps created after this function call. It will not
@@ -636,7 +643,7 @@ size_t GetSystemCommitCharge();
// better to call this function early in initialization and again before
// entering the main loop.
// Note: Returns true on Windows 2000 without doing anything.
-bool EnableLowFragmentationHeap();
+BASE_API bool EnableLowFragmentationHeap();
// Enables 'terminate on heap corruption' flag. Helps protect against heap
// overflow. Has no effect if the OS doesn't provide the necessary facility.
@@ -652,16 +659,14 @@ malloc_zone_t* GetPurgeableZone();
#endif
#endif
-#if defined(UNIT_TEST)
// Enables stack dump to console output on exception and signals.
// When enabled, the process will quit immediately. This is meant to be used in
// unit_tests only!
-bool EnableInProcessStackDumping();
-#endif // defined(UNIT_TEST)
+BASE_API bool EnableInProcessStackDumping();
// If supported on the platform, and the user has sufficent rights, increase
// the current process's scheduling priority to a high priority.
-void RaiseProcessToHighPriority();
+BASE_API void RaiseProcessToHighPriority();
#if defined(OS_MACOSX)
// Restore the default exception handler, setting it to Apple Crash Reporter
diff --git a/base/scoped_native_library.h b/base/scoped_native_library.h
index 28b29b3..151bb5f 100644
--- a/base/scoped_native_library.h
+++ b/base/scoped_native_library.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -6,6 +6,7 @@
#define BASE_SCOPED_NATIVE_LIBRARY_H_
#pragma once
+#include "base/base_api.h"
#include "base/native_library.h"
class FilePath;
@@ -15,7 +16,7 @@ namespace base {
// A class which encapsulates a base::NativeLibrary object available only in a
// scope.
// This class automatically unloads the loaded library in its destructor.
-class ScopedNativeLibrary {
+class BASE_API ScopedNativeLibrary {
public:
// Initializes with a NULL library.
ScopedNativeLibrary();
diff --git a/base/sys_info.h b/base/sys_info.h
index adfb250..1d2939e 100644
--- a/base/sys_info.h
+++ b/base/sys_info.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -6,6 +6,7 @@
#define BASE_SYS_INFO_H_
#pragma once
+#include "base/base_api.h"
#include "base/basictypes.h"
#include <string>
@@ -14,7 +15,7 @@ class FilePath;
namespace base {
-class SysInfo {
+class BASE_API SysInfo {
public:
// Return the number of logical processors/cores on the current machine.
static int NumberOfProcessors();
diff --git a/base/threading/thread.h b/base/threading/thread.h
index 379615d..034cb7d 100644
--- a/base/threading/thread.h
+++ b/base/threading/thread.h
@@ -8,6 +8,7 @@
#include <string>
+#include "base/base_api.h"
#include "base/message_loop.h"
#include "base/message_loop_proxy.h"
#include "base/threading/platform_thread.h"
@@ -25,7 +26,7 @@ namespace base {
// (1) Thread::CleanUp()
// (2) MessageLoop::~MessageLoop
// (3.b) MessageLoop::DestructionObserver::WillDestroyCurrentMessageLoop
-class Thread : PlatformThread::Delegate {
+class BASE_API Thread : PlatformThread::Delegate {
public:
struct Options {
Options() : message_loop_type(MessageLoop::TYPE_DEFAULT), stack_size(0) {}
diff --git a/base/timer.h b/base/timer.h
index ff14427..6fe826a 100644
--- a/base/timer.h
+++ b/base/timer.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// 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.
@@ -47,6 +47,7 @@
// because they're flaky on the buildbot, but when you run them locally you
// should be able to tell the difference.
+#include "base/base_api.h"
#include "base/logging.h"
#include "base/task.h"
#include "base/time.h"
@@ -61,7 +62,7 @@ namespace base {
//
// This class exists to share code between BaseTimer<T> template instantiations.
//
-class BaseTimer_Helper {
+class BASE_API BaseTimer_Helper {
public:
// Stops the timer.
~BaseTimer_Helper() {
diff --git a/base/tracked_objects.h b/base/tracked_objects.h
index 3994d80..99b5ed2 100644
--- a/base/tracked_objects.h
+++ b/base/tracked_objects.h
@@ -10,6 +10,7 @@
#include <string>
#include <vector>
+#include "base/base_api.h"
#include "base/synchronization/lock.h"
#include "base/tracked.h"
#include "base/threading/thread_local_storage.h"
@@ -156,7 +157,7 @@ namespace tracked_objects {
// For a specific thread, and a specific birth place, the collection of all
// death info (with tallies for each death thread, to prevent access conflicts).
class ThreadData;
-class BirthOnThread {
+class BASE_API BirthOnThread {
public:
explicit BirthOnThread(const Location& location);
@@ -179,7 +180,7 @@ class BirthOnThread {
//------------------------------------------------------------------------------
// A class for accumulating counts of births (without bothering with a map<>).
-class Births: public BirthOnThread {
+class BASE_API Births: public BirthOnThread {
public:
explicit Births(const Location& location);
@@ -207,7 +208,7 @@ class Births: public BirthOnThread {
// birthplace (fixed Location). Used both on specific threads, and also used
// in snapshots when integrating assembled data.
-class DeathData {
+class BASE_API DeathData {
public:
// Default initializer.
DeathData() : count_(0), square_duration_(0) {}
@@ -248,7 +249,7 @@ class DeathData {
// The source of this data was collected on many threads, and is asynchronously
// changing. The data in this instance is not asynchronously changing.
-class Snapshot {
+class BASE_API Snapshot {
public:
// When snapshotting a full life cycle set (birth-to-death), use this:
Snapshot(const BirthOnThread& birth_on_thread, const ThreadData& death_thread,
@@ -284,7 +285,7 @@ class Snapshot {
// items. It protects the gathering under locks, so that it could be called via
// Posttask on any threads, or passed to all the target threads in parallel.
-class DataCollector {
+class BASE_API DataCollector {
public:
typedef std::vector<Snapshot> Collection;
@@ -331,7 +332,7 @@ class DataCollector {
// Aggregation contains summaries (totals and subtotals) of groups of Snapshot
// instances to provide printing of these collections on a single line.
-class Aggregation: public DeathData {
+class BASE_API Aggregation: public DeathData {
public:
Aggregation();
~Aggregation();
@@ -363,7 +364,7 @@ class Aggregation: public DeathData {
// instances within the groups (for detailed rendering of the instances in an
// aggregation).
-class Comparator {
+class BASE_API Comparator {
public:
// Selector enum is the token identifier for each parsed keyword, most of
// which specify a sort order.
@@ -464,7 +465,7 @@ class Comparator {
// For each thread, we have a ThreadData that stores all tracking info generated
// on this thread. This prevents the need for locking as data accumulates.
-class ThreadData {
+class BASE_API ThreadData {
public:
typedef std::map<Location, Births*> BirthMap;
typedef std::map<const Births*, DeathData> DeathMap;
diff --git a/base/vlog.h b/base/vlog.h
index 54e777f..0a55006 100644
--- a/base/vlog.h
+++ b/base/vlog.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -10,13 +10,14 @@
#include <string>
#include <vector>
+#include "base/base_api.h"
#include "base/basictypes.h"
#include "base/string_piece.h"
namespace logging {
// A helper class containing all the settings for vlogging.
-class VlogInfo {
+class BASE_API VlogInfo {
public:
static const int kDefaultVlogLevel;
@@ -70,8 +71,8 @@ class VlogInfo {
// "kh*n" matches "khn", "khan", or even "khaaaaan"
// "/foo\bar" matches "/foo/bar", "\foo\bar", or "/foo\bar"
// (disregarding C escaping rules)
-bool MatchVlogPattern(const base::StringPiece& string,
- const base::StringPiece& vlog_pattern);
+BASE_API bool MatchVlogPattern(const base::StringPiece& string,
+ const base::StringPiece& vlog_pattern);
} // namespace logging
diff --git a/base/weak_ptr.h b/base/weak_ptr.h
index 60da03f..8862517 100644
--- a/base/weak_ptr.h
+++ b/base/weak_ptr.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// 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.
@@ -52,6 +52,7 @@
#define BASE_WEAK_PTR_H_
#pragma once
+#include "base/base_api.h"
#include "base/logging.h"
#include "base/ref_counted.h"
#include "base/threading/non_thread_safe.h"
@@ -62,7 +63,7 @@ namespace internal {
// These classes are part of the WeakPtr implementation.
// DO NOT USE THESE CLASSES DIRECTLY YOURSELF.
-class WeakReference {
+class BASE_API WeakReference {
public:
class Flag : public RefCounted<Flag>, public base::NonThreadSafe {
public:
@@ -90,7 +91,7 @@ class WeakReference {
scoped_refptr<Flag> flag_;
};
-class WeakReferenceOwner {
+class BASE_API WeakReferenceOwner {
public:
WeakReferenceOwner();
~WeakReferenceOwner();
@@ -116,7 +117,7 @@ class WeakReferenceOwner {
// constructor by avoiding the need for a public accessor for ref_. A
// WeakPtr<T> cannot access the private members of WeakPtr<U>, so this
// base class gives us a way to access ref_ in a protected fashion.
-class WeakPtrBase {
+class BASE_API WeakPtrBase {
public:
WeakPtrBase();
~WeakPtrBase();