17686: Add a pref to control image animation. r=tor, sr=buster

git-svn-id: svn://10.0.0.236/trunk@84683 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
akkana%netscape.com
2001-01-09 23:55:27 +00:00
parent 9150f964cc
commit 0d7c7c2d2b
4 changed files with 59 additions and 0 deletions

View File

@@ -95,6 +95,7 @@ nsPresContext::nsPresContext()
mCompatibilityLocked = PR_FALSE;
mWidgetRenderingMode = eWidgetRendering_Gfx;
mImageAnimationMode = eImageAnimation_Normal;
mImageAnimationModePref = eImageAnimation_Normal;
mStopped = PR_FALSE;
mStopChrome = PR_TRUE;
@@ -154,6 +155,7 @@ nsPresContext::~nsPresContext()
mPrefs->UnregisterCallback("browser.underline_anchors", PrefChangedCallback, (void*)this);
mPrefs->UnregisterCallback("browser.link_color", PrefChangedCallback, (void*)this);
mPrefs->UnregisterCallback("browser.visited_color", PrefChangedCallback, (void*)this);
mPrefs->UnregisterCallback("image.animation_mode", PrefChangedCallback, (void*)this);
}
}
@@ -292,6 +294,19 @@ nsPresContext::GetUserPreferences()
}
GetFontPreferences();
// * image animation
char* animatePref = 0;
nsresult rv = mPrefs->CopyCharPref("image.animation_mode", &animatePref);
if (NS_SUCCEEDED(rv) && animatePref) {
if (!nsCRT::strcmp(animatePref, "normal"))
mImageAnimationModePref = eImageAnimation_Normal;
else if (!nsCRT::strcmp(animatePref, "none"))
mImageAnimationModePref = eImageAnimation_None;
else if (!nsCRT::strcmp(animatePref, "once"))
mImageAnimationModePref = eImageAnimation_LoopOnce;
nsMemory::Free(animatePref);
}
}
NS_IMETHODIMP
@@ -390,6 +405,7 @@ nsPresContext::Init(nsIDeviceContext* aDeviceContext)
mPrefs->RegisterCallback("browser.underline_anchors", PrefChangedCallback, (void*)this);
mPrefs->RegisterCallback("browser.link_color", PrefChangedCallback, (void*)this);
mPrefs->RegisterCallback("browser.visited_color", PrefChangedCallback, (void*)this);
mPrefs->RegisterCallback("image.animation_mode", PrefChangedCallback, (void*)this);
// Initialize our state from the user preferences
GetUserPreferences();
@@ -414,6 +430,18 @@ nsPresContext::SetShell(nsIPresShell* aShell)
NS_ASSERTION(doc, "expect document here");
if (doc) {
doc->GetBaseURL(*getter_AddRefs(mBaseURL));
if (mBaseURL) {
char* scheme = 0;
mBaseURL->GetScheme(&scheme);
if (nsCRT::strncmp(scheme, "chrome", 6) &&
nsCRT::strncmp(scheme, "resource", 8))
mImageAnimationMode = mImageAnimationModePref;
else
mImageAnimationMode = eImageAnimation_Normal;
nsMemory::Free(scheme);
}
if (mLangService) {
nsAutoString charset;
doc->AddCharSetObserver(this);

View File

@@ -95,6 +95,7 @@ nsPresContext::nsPresContext()
mCompatibilityLocked = PR_FALSE;
mWidgetRenderingMode = eWidgetRendering_Gfx;
mImageAnimationMode = eImageAnimation_Normal;
mImageAnimationModePref = eImageAnimation_Normal;
mStopped = PR_FALSE;
mStopChrome = PR_TRUE;
@@ -154,6 +155,7 @@ nsPresContext::~nsPresContext()
mPrefs->UnregisterCallback("browser.underline_anchors", PrefChangedCallback, (void*)this);
mPrefs->UnregisterCallback("browser.link_color", PrefChangedCallback, (void*)this);
mPrefs->UnregisterCallback("browser.visited_color", PrefChangedCallback, (void*)this);
mPrefs->UnregisterCallback("image.animation_mode", PrefChangedCallback, (void*)this);
}
}
@@ -292,6 +294,19 @@ nsPresContext::GetUserPreferences()
}
GetFontPreferences();
// * image animation
char* animatePref = 0;
nsresult rv = mPrefs->CopyCharPref("image.animation_mode", &animatePref);
if (NS_SUCCEEDED(rv) && animatePref) {
if (!nsCRT::strcmp(animatePref, "normal"))
mImageAnimationModePref = eImageAnimation_Normal;
else if (!nsCRT::strcmp(animatePref, "none"))
mImageAnimationModePref = eImageAnimation_None;
else if (!nsCRT::strcmp(animatePref, "once"))
mImageAnimationModePref = eImageAnimation_LoopOnce;
nsMemory::Free(animatePref);
}
}
NS_IMETHODIMP
@@ -390,6 +405,7 @@ nsPresContext::Init(nsIDeviceContext* aDeviceContext)
mPrefs->RegisterCallback("browser.underline_anchors", PrefChangedCallback, (void*)this);
mPrefs->RegisterCallback("browser.link_color", PrefChangedCallback, (void*)this);
mPrefs->RegisterCallback("browser.visited_color", PrefChangedCallback, (void*)this);
mPrefs->RegisterCallback("image.animation_mode", PrefChangedCallback, (void*)this);
// Initialize our state from the user preferences
GetUserPreferences();
@@ -414,6 +430,18 @@ nsPresContext::SetShell(nsIPresShell* aShell)
NS_ASSERTION(doc, "expect document here");
if (doc) {
doc->GetBaseURL(*getter_AddRefs(mBaseURL));
if (mBaseURL) {
char* scheme = 0;
mBaseURL->GetScheme(&scheme);
if (nsCRT::strncmp(scheme, "chrome", 6) &&
nsCRT::strncmp(scheme, "resource", 8))
mImageAnimationMode = mImageAnimationModePref;
else
mImageAnimationMode = eImageAnimation_Normal;
nsMemory::Free(scheme);
}
if (mLangService) {
nsAutoString charset;
doc->AddCharSetObserver(this);

View File

@@ -210,6 +210,8 @@ protected:
PRBool mInitialized;
#endif
nsImageAnimation mImageAnimationModePref;
protected:
void GetUserPreferences();
void GetFontPreferences();

View File

@@ -260,6 +260,7 @@ pref("advanced.always_load_images", true);
pref("security.enable_java", true);
pref("css.allow", true);
pref("advanced.mailftp", false);
pref("image.animation_mode", "normal");
pref("offline.startup_state", 0);
pref("offline.send.unsent_messages", 0);