зеркало из https://github.com/mozilla/gecko-dev.git
NOT PART OF THE BUILD - Adding profile management.
This commit is contained in:
Родитель
0ba1822f4e
Коммит
6c4ced6bd9
Двоичные данные
embedding/browser/powerplant/PPBrowser.mcp
Двоичные данные
embedding/browser/powerplant/PPBrowser.mcp
Двоичный файл не отображается.
|
@ -8,4 +8,6 @@
|
|||
//--------------------------------------------------------------------------------
|
||||
|
||||
#define wantDebugging 0
|
||||
#define wantProfiles 1
|
||||
|
||||
#include "BrowserHeaders.pch.h"
|
||||
|
|
|
@ -40,11 +40,16 @@
|
|||
#else
|
||||
#undef DEBUG
|
||||
#endif
|
||||
|
||||
#if wantProfiles
|
||||
#define USE_PROFILES 1
|
||||
#else
|
||||
#define USE_PROFILES 1
|
||||
#endif
|
||||
|
||||
#include "DefinesMac.h"
|
||||
#include "DefinesMozilla.h"
|
||||
|
||||
|
||||
|
||||
// Support for automatically naming the precompiled header file ...
|
||||
#if __POWERPC__
|
||||
#if wantDebugging
|
||||
|
|
|
@ -8,4 +8,6 @@
|
|||
//--------------------------------------------------------------------------------
|
||||
|
||||
#define wantDebugging 1
|
||||
#define wantProfiles 1
|
||||
|
||||
#include "BrowserHeaders.pch.h"
|
||||
|
|
Двоичные данные
embedding/browser/powerplant/resources/Browser.ppob
Двоичные данные
embedding/browser/powerplant/resources/Browser.ppob
Двоичный файл не отображается.
Двоичные данные
embedding/browser/powerplant/resources/Browser.rsrc
Двоичные данные
embedding/browser/powerplant/resources/Browser.rsrc
Двоичный файл не отображается.
|
@ -28,9 +28,11 @@
|
|||
#include <UDrawingState.h>
|
||||
#include <UMemoryMgr.h>
|
||||
#include <URegistrar.h>
|
||||
#include <LWindow.h>
|
||||
#include <LCaption.h>
|
||||
#include <LPushButton.h>
|
||||
#include <LStaticText.h>
|
||||
#include <LIconControl.h>
|
||||
#include <LWindow.h>
|
||||
#include <LTextTableView.h>
|
||||
#include <UControlRegistry.h>
|
||||
#include <UGraphicUtils.h>
|
||||
#include <UEnvironment.h>
|
||||
|
@ -54,6 +56,7 @@
|
|||
#include "nsIDirectoryService.h"
|
||||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsAppDirectoryServiceDefs.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsIPref.h"
|
||||
#include "nsRepeater.h"
|
||||
#include "nsILocalFile.h"
|
||||
|
@ -69,10 +72,13 @@
|
|||
|
||||
#include <TextServices.h>
|
||||
|
||||
extern "C" void NS_SetupRegistry();
|
||||
#if USE_PROFILES
|
||||
#include "CProfileManager.h"
|
||||
#include "nsIProfileChangeStatus.h"
|
||||
#endif
|
||||
|
||||
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
|
||||
static const char* kProgramName = "PP Browser";
|
||||
static const char* kProgramName = "PPEmbed";
|
||||
|
||||
// ===========================================================================
|
||||
// ¥ Main Program
|
||||
|
@ -118,6 +124,11 @@ int main()
|
|||
|
||||
CBrowserApp::CBrowserApp()
|
||||
{
|
||||
|
||||
#if USE_PROFILES
|
||||
mRefCnt = 1;
|
||||
#endif
|
||||
|
||||
if ( PP_PowerPlant::UEnvironment::HasFeature( PP_PowerPlant::env_HasAppearance ) ) {
|
||||
::RegisterAppearanceClient();
|
||||
}
|
||||
|
@ -137,6 +148,12 @@ CBrowserApp::CBrowserApp()
|
|||
RegisterClass_(CUrlField);
|
||||
RegisterClass_(CThrobber);
|
||||
|
||||
#if USE_PROFILES
|
||||
RegisterClass_(LScroller);
|
||||
RegisterClass_(LTextTableView);
|
||||
RegisterClass_(LColorEraseAttachment);
|
||||
#endif
|
||||
|
||||
// Contexual Menu Support
|
||||
UCMMUtils::Initialize();
|
||||
RegisterClass_(LCMAttachment);
|
||||
|
@ -205,6 +222,20 @@ void
|
|||
CBrowserApp::StartUp()
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
#if USE_PROFILES
|
||||
CProfileManager *profileMgr = new CProfileManager;
|
||||
profileMgr->StartUp();
|
||||
AddAttachment(profileMgr);
|
||||
|
||||
// Register for profile changes
|
||||
NS_WITH_SERVICE(nsIObserverService, observerService, NS_OBSERVERSERVICE_CONTRACTID, &rv);
|
||||
ThrowIfNil_(observerService);
|
||||
observerService->AddObserver(this, PROFILE_APPROVE_CHANGE_TOPIC);
|
||||
observerService->AddObserver(this, PROFILE_CHANGE_TEARDOWN_TOPIC);
|
||||
observerService->AddObserver(this, PROFILE_AFTER_CHANGE_TOPIC);
|
||||
|
||||
#else
|
||||
|
||||
// If we don't want different user profiles, all that's needed is
|
||||
// to make an nsMPFileLocProvider. This will provide the same file
|
||||
|
@ -224,6 +255,8 @@ CBrowserApp::StartUp()
|
|||
prefs->ResetPrefs();
|
||||
prefs->ReadUserPrefs();
|
||||
|
||||
#endif
|
||||
|
||||
InitializePrefs();
|
||||
|
||||
ObeyCommand(PP_PowerPlant::cmd_New, nil); // EXAMPLE, create a new window
|
||||
|
@ -576,3 +609,62 @@ Boolean CBrowserApp::SelectFileObject(PP_PowerPlant::CommandT inCommand,
|
|||
}
|
||||
return result;
|
||||
}
|
||||
#if USE_PROFILES
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// CBrowserApp : nsISupports
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
NS_IMPL_ISUPPORTS2(CBrowserApp, nsIObserver, nsISupportsWeakReference);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// CBrowserApp : nsIObserver
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
NS_IMETHODIMP CBrowserApp::Observe(nsISupports *aSubject, const PRUnichar *aTopic, const PRUnichar *someData)
|
||||
{
|
||||
#define CLOSE_WINDOWS_ON_SWITCH 1
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (nsCRT::strcmp(aTopic, PROFILE_APPROVE_CHANGE_TOPIC) == 0)
|
||||
{
|
||||
// Ask the user if they want to
|
||||
DialogItemIndex item = UModalAlerts::StopAlert(alrt_ConfirmProfileSwitch);
|
||||
if (item != kStdOkItemIndex)
|
||||
{
|
||||
nsCOMPtr<nsIProfileChangeStatus> status = do_QueryInterface(aSubject);
|
||||
NS_ENSURE_TRUE(status, NS_ERROR_FAILURE);
|
||||
status->VetoChange();
|
||||
}
|
||||
}
|
||||
else if (nsCRT::strcmp(aTopic, PROFILE_CHANGE_TEARDOWN_TOPIC) == 0)
|
||||
{
|
||||
// Close all open windows. Alternatively, we could just call CBrowserWindow::Stop()
|
||||
// on each. Either way, we have to stop all network activity on this phase.
|
||||
|
||||
TArrayIterator<LCommander*> iterator(mSubCommanders, LArrayIterator::from_End);
|
||||
LCommander* theSub;
|
||||
while (iterator.Previous(theSub)) {
|
||||
CBrowserWindow *browserWindow = dynamic_cast<CBrowserWindow*>(theSub);
|
||||
if (browserWindow) {
|
||||
browserWindow->Stop();
|
||||
mSubCommanders.RemoveItemsAt(1, iterator.GetCurrentIndex());
|
||||
delete browserWindow;
|
||||
}
|
||||
}
|
||||
NS_WITH_SERVICE(nsINetDataCacheManager, cacheMgr, NS_NETWORK_CACHE_MANAGER_CONTRACTID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
cacheMgr->Clear(nsINetDataCacheManager::MEM_CACHE);
|
||||
}
|
||||
else if (nsCRT::strcmp(aTopic, PROFILE_AFTER_CHANGE_TOPIC) == 0)
|
||||
{
|
||||
InitializePrefs(); // In case we have just switched to a newly created profile.
|
||||
|
||||
// Make a new default window
|
||||
ObeyCommand(PP_PowerPlant::cmd_New, nil);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
#endif // USE_PROFILES
|
||||
|
|
|
@ -25,18 +25,27 @@
|
|||
#include <PP_Prefix.h>
|
||||
#include <LApplication.h>
|
||||
|
||||
#ifndef nsError_h
|
||||
#include "nsError.h"
|
||||
#endif
|
||||
|
||||
#include "nsIObserver.h"
|
||||
#include "nsWeakReference.h"
|
||||
|
||||
class CBrowserApp : public PP_PowerPlant::LApplication
|
||||
|
||||
#if USE_PROFILES
|
||||
,public nsIObserver
|
||||
,public nsSupportsWeakReference
|
||||
#endif
|
||||
|
||||
{
|
||||
|
||||
public:
|
||||
CBrowserApp(); // constructor registers PPobs
|
||||
virtual ~CBrowserApp(); // stub destructor
|
||||
CBrowserApp(); // constructor registers PPobs
|
||||
virtual ~CBrowserApp(); // stub destructor
|
||||
|
||||
#if USE_PROFILES
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIOBSERVER
|
||||
#endif
|
||||
|
||||
virtual void ProcessNextEvent();
|
||||
|
||||
|
@ -67,4 +76,9 @@ protected:
|
|||
|
||||
virtual Boolean SelectFileObject(PP_PowerPlant::CommandT inCommand,
|
||||
FSSpec& outSpec);
|
||||
|
||||
#if USE_PROFILES
|
||||
Boolean ConfirmProfileSwitch();
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче