fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
15楼#
发布于:2013-05-02 19:05
没干掉,只是移出地址栏。ctrl D 快捷键仍在,你会误按还是会的。
Firefox More than meets your experience
cdong
小狐狸
小狐狸
  • UID5909
  • 注册日期2005-05-12
  • 最后登录2014-10-13
  • 发帖数23
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
16楼#
发布于:2013-05-02 19:05
星星一直觉得很好用
要临时存一下的直接按星星,存到未整理的收藏夹
需要长期保存的拖动标签页面到收藏栏相应位置/文件夹,再按星星可以直接改名字

允许Javascript这个选项右侧的高级,每次全新的firefox必须设置不允许移动/改变窗口大小
※云※
小狐狸
小狐狸
  • UID32445
  • 注册日期2010-04-01
  • 最后登录2018-05-21
  • 发帖数31
  • 经验30枚
  • 威望0点
  • 贡献值0点
  • 好评度4点
17楼#
发布于:2013-05-02 19:05
cdtylh06:去掉了挺好啊,说实话我用firefox四年多,那几个选项从来没去勾过!回到原帖

+1
我用N年了 也没用过。。。
195
195
千年狐狸
千年狐狸
  • UID3920
  • 注册日期2005-03-12
  • 最后登录2023-01-15
  • 发帖数1123
  • 经验50枚
  • 威望0点
  • 贡献值0点
  • 好评度2点
  • 社区居民
  • 忠实会员
18楼#
发布于:2013-05-02 19:05
看样子很多菜单都到about:config里。
tawcw
火狐狸
火狐狸
  • UID30390
  • 注册日期2009-09-15
  • 最后登录2023-08-09
  • 发帖数102
  • 经验22枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
19楼#
发布于:2013-05-02 19:05
從來不用那個星星而且一直隱藏著,對我來說根本沒變過,呵
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
20楼#
发布于:2013-05-02 19:05
好像官方又准备恢复了。。。。

https://bugzilla.mozilla.org/show_bug.cgi?id=867343
http://pcxfirefox.wordpress.com/
zhuzhi00
火狐狸
火狐狸
  • UID33710
  • 注册日期2010-08-16
  • 最后登录2021-07-31
  • 发帖数130
  • 经验130枚
  • 威望0点
  • 贡献值12点
  • 好评度2点
  • 社区居民
  • 忠实会员
21楼#
发布于:2013-05-02 19:05
反正我很少去用,去掉也好←_←
中国谋智被曝流氓代码 官方:是别人太肮脏
lonely_8
非常火狐
非常火狐
  • UID30273
  • 注册日期2009-09-03
  • 最后登录2022-08-09
  • 发帖数733
  • 经验469枚
  • 威望0点
  • 贡献值86点
  • 好评度147点
  • 社区居民
  • 忠实会员
22楼#
发布于:2013-05-02 19:05
pcxfirefox:好像官方又准备恢复了。。。。

https://bugzilla.mozilla.org/show_bug.cgi?id=867343
回到原帖

今天恢复了
MalcKear
千年狐狸
千年狐狸
  • UID35386
  • 注册日期2011-03-05
  • 最后登录2020-03-02
  • 发帖数1348
  • 经验131枚
  • 威望0点
  • 贡献值16点
  • 好评度10点
  • 社区居民
  • 忠实会员
23楼#
发布于:2013-05-02 19:05
lonely_8
今天恢复了
回到原帖

这得多蛋疼啊
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
24楼#
发布于:2013-05-02 19:05
MalcKear
这得多蛋疼啊
回到原帖

好像是UX开发组提的建议
http://pcxfirefox.wordpress.com/
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
25楼#
发布于:2013-05-02 19:05
其实我赞同去掉选项,只保留about:config设置,大概可以节省一点点的xul体积……反正这些选项绝大部分用户都不会去取消勾选,有需要取消的多半也具备自行修改/建立config项的能力
-いたんですか? -ええ、ずっと
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
26楼#
发布于:2013-05-02 19:05
白左:其实我赞同去掉选项,只保留about:config设置,大概可以节省一点点的xul体积……反正这些选项绝大部分用户都不会去取消勾选,有需要取消的多半也具备自行修改/建立config项的能力回到原帖

那还不如把webrtc的东西从xul里分离出来
http://pcxfirefox.wordpress.com/
msky
千年狐狸
千年狐狸
  • UID14649
  • 注册日期2006-09-21
  • 最后登录2023-04-03
  • 发帖数2959
  • 经验166枚
  • 威望0点
  • 贡献值12点
  • 好评度9点
  • 社区居民
27楼#
发布于:2013-05-02 19:05
pcxfirefox大神,你那个64位版本使用32位插件的项目进行得怎么样了?

64位firefox没有插件用真是有点鸡肋啊
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
28楼#
发布于:2013-05-02 19:05
msky:pcxfirefox大神,你那个64位版本使用32位插件的项目进行得怎么样了?

64位firefox没有插件用真是有点鸡肋啊
回到原帖

http://code.google.com/p/pcxfirefox/wik ... s?tm=2#x64

目前来看,15的比较稳定,20处于不稳定状态(特别是flash,我使用x86 flash老是插件进程崩溃,x64 flash没问题。其他x86插件试了wmp之类的没问题)

我暂时没有时间维护和调试这个补丁,补丁你可以参考下面的内容(基于20的源码),如果有新的修改请通告给我

# pcxfirefox patch
# User xunxun
# Date 2013022302:00
# Make x64 Firefox support x86 plugins

diff -ruNa 20/dom/plugins/base/nsPluginDirServiceProvider.cpp mozilla-release/dom/plugins/base/nsPluginDirServiceProvider.cpp
--- 20/dom/plugins/base/nsPluginDirServiceProvider.cpp	Wed Mar 27 06:17:42 2013
+++ mozilla-release/dom/plugins/base/nsPluginDirServiceProvider.cpp	Sat Apr  6 23:59:55 2013
@@ -3,6 +3,9 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+#include "GeckoChildProcessHost.h"
+#include "base/process_util.h"
+
 #include "nsPluginDirServiceProvider.h"
 
 #include "nsCRT.h"
@@ -452,21 +455,41 @@
 
   nsCOMArray<nsIFile> dirs;
 
-  GetPLIDDirectoriesWithRootKey(nsIWindowsRegKey::ROOT_KEY_CURRENT_USER, dirs);
-  GetPLIDDirectoriesWithRootKey(nsIWindowsRegKey::ROOT_KEY_LOCAL_MACHINE, dirs);
+  GetPLIDDirectoriesWithRootKey(nsIWindowsRegKey::ROOT_KEY_CURRENT_USER,
+                                PR_FALSE, dirs);
+  GetPLIDDirectoriesWithRootKey(nsIWindowsRegKey::ROOT_KEY_LOCAL_MACHINE,
+                                PR_FALSE, dirs);
+
+#if defined(_M_X64)
+  // enumerate 32-bit registry to support x86 image on x64 via IPC
+
+  nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
+  if (prefs) {
+    bool b32Bit = PR_FALSE;
+    prefs->GetBoolPref("dom.ipc.plugins.i386", &b32Bit);
+    if (b32Bit) {
+      if (mozilla::ipc::GeckoChildProcessHost::GetSupportedArchitecturesForProcessType(GeckoProcessType_Plugin) & base::PROCESS_ARCH_I386) {
+        GetPLIDDirectoriesWithRootKey(nsIWindowsRegKey::ROOT_KEY_LOCAL_MACHINE,
+                                      PR_TRUE, dirs);
+      }
+    }
+  }
+#endif
 
   return NS_NewArrayEnumerator(aEnumerator, dirs);
 }
 
 nsresult
-nsPluginDirServiceProvider::GetPLIDDirectoriesWithRootKey(uint32_t aKey, nsCOMArray<nsIFile> &aDirs)
+nsPluginDirServiceProvider::GetPLIDDirectoriesWithRootKey(uint32_t aKey, const PRBool aWow6432, nsCOMArray<nsIFile> &aDirs)
 {
   nsCOMPtr<nsIWindowsRegKey> regKey =
     do_CreateInstance("@mozilla.org/windows-registry-key;1");
   NS_ENSURE_TRUE(regKey, NS_ERROR_FAILURE);
 
   nsresult rv = regKey->Open(aKey,
-                             NS_LITERAL_STRING("Software\\MozillaPlugins"),
+                             aWow6432 ?
+                               NS_LITERAL_STRING("Software\\Wow6432Node\\MozillaPlugins") :
+                               NS_LITERAL_STRING("Software\\MozillaPlugins"),
                              nsIWindowsRegKey::ACCESS_READ);
   NS_ENSURE_SUCCESS(rv, rv);
 
diff -ruNa 20/dom/plugins/base/nsPluginDirServiceProvider.h mozilla-release/dom/plugins/base/nsPluginDirServiceProvider.h
--- 20/dom/plugins/base/nsPluginDirServiceProvider.h	Wed Mar 27 06:17:42 2013
+++ mozilla-release/dom/plugins/base/nsPluginDirServiceProvider.h	Sat Apr  6 23:49:42 2013
@@ -37,6 +37,7 @@
    static nsresult GetPLIDDirectories(nsISimpleEnumerator **aEnumerator);
 private:
    static nsresult GetPLIDDirectoriesWithRootKey(uint32_t aKey,
+     const PRBool aWow6432,
      nsCOMArray<nsIFile> &aDirs);
 #endif
 
diff -ruNa 20/dom/plugins/base/nsPluginsDirWin.cpp mozilla-release/dom/plugins/base/nsPluginsDirWin.cpp
--- 20/dom/plugins/base/nsPluginsDirWin.cpp	Wed Mar 27 06:17:42 2013
+++ mozilla-release/dom/plugins/base/nsPluginsDirWin.cpp	Sat Apr  6 23:51:39 2013
@@ -11,6 +11,9 @@
   by Alex Musil
  */
 
+#include "GeckoChildProcessHost.h"
+#include "base/process_util.h"
+
 #include "mozilla/DebugOnly.h"
 
 #include "nsPluginsDir.h"
@@ -25,6 +28,8 @@
 #include "nsString.h"
 #include "nsIFile.h"
 #include "nsUnicharUtils.h"
+#include "nsIPrefBranch.h"
+#include "nsIPrefService.h"
 
 using namespace mozilla;
 
@@ -163,7 +168,30 @@
 #ifdef _M_IX86
             canLoad = (arch == IMAGE_FILE_MACHINE_I386);
 #elif defined(_M_X64)
-            canLoad = (arch == IMAGE_FILE_MACHINE_AMD64);
+            // x64 supports both x86 and x64
+            switch (arch) {
+            case IMAGE_FILE_MACHINE_AMD64:
+              canLoad = PR_TRUE;
+              break;
+
+            case IMAGE_FILE_MACHINE_I386:
+              nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
+              if (prefs) {
+                bool enabled = PR_FALSE;
+                if (NS_SUCCEEDED(prefs->GetBoolPref("dom.ipc.plugins.enabled",
+                                                    &enabled)) &&
+                    enabled) {
+                  if (NS_SUCCEEDED(prefs->GetBoolPref("dom.ipc.plugins.i386",
+                                                      &enabled)) &&
+                      enabled) {
+                    if (mozilla::ipc::GeckoChildProcessHost::GetSupportedArchitecturesForProcessType(GeckoProcessType_Plugin) & base::PROCESS_ARCH_I386) {
+                      canLoad = PR_TRUE;
+                    }
+                  }
+                }
+              }
+              break;
+            }
 #elif defined(_M_IA64)
             canLoad = (arch == IMAGE_FILE_MACHINE_IA64);
 #endif
diff -ruNa 20/dom/plugins/ipc/PluginProcessParent.cpp mozilla-release/dom/plugins/ipc/PluginProcessParent.cpp
--- 20/dom/plugins/ipc/PluginProcessParent.cpp	Wed Mar 27 06:17:42 2013
+++ mozilla-release/dom/plugins/ipc/PluginProcessParent.cpp	Sat Apr  6 23:52:55 2013
@@ -50,6 +50,16 @@
         // If the call failed just assume that we want the current architecture.
         pluginLibArchitectures = currentArchitecture;
     }
+#elif defined(XP_WIN) && defined(_M_X64)
+    // check binary format.  x64 supports both x86 and x64.
+    int len = MultiByteToWideChar(CP_UTF8, 0, mPluginFilePath.c_str(),
+                                  -1, NULL, 0);
+    LPWSTR unicodePath = new WCHAR[len];
+    MultiByteToWideChar(CP_UTF8, 0, mPluginFilePath.c_str(), -1,
+                        unicodePath, len);
+    nsresult rv = GetArchitecturesForBinary(unicodePath,
+                                            &pluginLibArchitectures);
+    delete [] unicodePath;
 #endif
 
     ProcessArchitecture selectedArchitecture = currentArchitecture;
diff -ruNa 20/ipc/glue/GeckoChildProcessHost.cpp mozilla-release/ipc/glue/GeckoChildProcessHost.cpp
--- 20/ipc/glue/GeckoChildProcessHost.cpp	Wed Mar 27 06:17:46 2013
+++ mozilla-release/ipc/glue/GeckoChildProcessHost.cpp	Sun Apr  7 11:30:43 2013
@@ -27,6 +27,8 @@
 
 #include "nsDirectoryServiceDefs.h"
 #include "nsIFile.h"
+#include "nsIPrefBranch.h"
+#include "nsIPrefService.h"
 
 #include "mozilla/ipc/BrowserProcessSubThread.h"
 #include "mozilla/Omnijar.h"
@@ -115,8 +117,18 @@
 #endif
 }
 
-void GetPathToBinary(FilePath& exePath)
+bool GetPathToBinary(FilePath& exePath, base::ProcessArchitecture arch)
 {
+#if defined(OS_WIN)
+  exePath = FilePath::FromWStringHack(CommandLine::ForCurrentProcess()->program());
+  exePath = exePath.DirName();
+#if defined(_M_X64)
+  if (arch == base::PROCESS_ARCH_I386) {
+        exePath = exePath.AppendASCII("x86");
+  }
+#endif
+  exePath = exePath.AppendASCII(MOZ_CHILD_PROCESS_NAME);
+#elif defined(OS_POSIX)
   if (ShouldHaveDirectoryService()) {
     nsCOMPtr<nsIProperties> directoryService(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID));
     NS_ASSERTION(directoryService, "Expected XPCOM to be available");
@@ -124,13 +136,8 @@
       nsCOMPtr<nsIFile> greDir;
       nsresult rv = directoryService->Get(NS_GRE_DIR, NS_GET_IID(nsIFile), getter_AddRefs(greDir));
       if (NS_SUCCEEDED(rv)) {
-#ifdef OS_WIN
-        nsString path;
-        greDir->GetPath(path);
-#else
         nsCString path;
         greDir->GetNativePath(path);
-#endif
         exePath = FilePath(path.get());
 #ifdef MOZ_WIDGET_COCOA
         // We need to use an App Bundle on OS X so that we can hide
@@ -142,15 +149,13 @@
   }
 
   if (exePath.empty()) {
-#ifdef OS_WIN
-    exePath = FilePath::FromWStringHack(CommandLine::ForCurrentProcess()->program());
-#else
     exePath = FilePath(CommandLine::ForCurrentProcess()->argv()[0]);
-#endif
     exePath = exePath.DirName();
   }
 
   exePath = exePath.AppendASCII(MOZ_CHILD_PROCESS_NAME);
+#endif
+  return true;
 }
 
 #ifdef MOZ_WIDGET_COCOA
@@ -169,7 +174,11 @@
 };
 #endif
 
+#ifdef XP_WIN
+nsresult GeckoChildProcessHost::GetArchitecturesForBinary(const wchar_t *path, uint32_t *result)
+#else
 nsresult GeckoChildProcessHost::GetArchitecturesForBinary(const char *path, uint32_t *result)
+#endif
 {
   *result = 0;
 
@@ -212,6 +221,40 @@
   }
 
   return (*result ? NS_OK : NS_ERROR_FAILURE);
+#elif defined(XP_WIN) && defined(_M_X64)
+  HANDLE file = CreateFileW(path, GENERIC_READ,
+                            FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+                            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+  if (file != INVALID_HANDLE_VALUE) {
+    HANDLE map = CreateFileMappingW(file, NULL, PAGE_READONLY, 0,
+                                    GetFileSize(file, NULL), NULL);
+    if (map != NULL) {
+      LPVOID mapView = MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0);
+      if (mapView != NULL) {
+        if (((IMAGE_DOS_HEADER*)mapView)->e_magic == IMAGE_DOS_SIGNATURE) {
+          long peImageHeaderStart = (((IMAGE_DOS_HEADER*)mapView)->e_lfanew);
+          if (peImageHeaderStart != 0L) {
+            DWORD arch = (((IMAGE_NT_HEADERS*)((LPBYTE)mapView + peImageHeaderStart))->FileHeader.Machine);
+            switch (arch) {
+            case IMAGE_FILE_MACHINE_I386:
+              *result = base::PROCESS_ARCH_I386;
+              break;
+            case IMAGE_FILE_MACHINE_AMD64:
+              *result = base::PROCESS_ARCH_X86_64;
+              break;
+            default:
+              break;
+            }
+          }
+        }
+        UnmapViewOfFile(mapView);
+      }
+      CloseHandle(map);
+    }
+    CloseHandle(file);
+  }
+
+  return (*result ? NS_OK : NS_ERROR_FAILURE);
 #else
   return NS_ERROR_NOT_IMPLEMENTED;
 #endif
@@ -225,7 +268,7 @@
     static uint32_t pluginContainerArchs = 0;
     if (pluginContainerArchs == 0) {
       FilePath exePath;
-      GetPathToBinary(exePath);
+      GetPathToBinary(exePath, base::GetCurrentProcessArchitecture());
       nsresult rv = GetArchitecturesForBinary(exePath.value().c_str(), &pluginContainerArchs);
       NS_ASSERTION(NS_SUCCEEDED(rv) && pluginContainerArchs != 0, "Getting architecture of plugin container failed!");
       if (NS_FAILED(rv) || pluginContainerArchs == 0) {
@@ -234,6 +277,19 @@
     }
     return pluginContainerArchs;
   }
+#elif defined(XP_WIN) && defined(_M_X64)
+  if (type == GeckoProcessType_Plugin) {
+    static uint32_t pluginContainerArchs = 0;
+    if (pluginContainerArchs == 0) {
+      pluginContainerArchs = base::PROCESS_ARCH_X86_64;
+
+      // Check 32-bit firefox installation
+      FilePath exePath;
+      if (GetPathToBinary(exePath, base::PROCESS_ARCH_I386))
+        pluginContainerArchs |= base::PROCESS_ARCH_I386;
+    }
+    return pluginContainerArchs;
+  }
 #endif
 
   return base::GetCurrentProcessArchitecture();
@@ -548,7 +604,7 @@
 #endif  // OS_LINUX || OS_MACOSX
 
   FilePath exePath;
-  GetPathToBinary(exePath);
+  GetPathToBinary(exePath, arch);
 
 #ifdef MOZ_WIDGET_ANDROID
   // The java wrapper unpacks this for us but can't make it executable
@@ -714,7 +770,8 @@
 #elif defined(OS_WIN)
 
   FilePath exePath;
-  GetPathToBinary(exePath);
+  if (!GetPathToBinary(exePath, arch))
+    return false;
 
   CommandLine cmdLine(exePath.ToWStringHack());
   cmdLine.AppendSwitchWithValue(switches::kProcessChannelID, channel_id());
diff -ruNa 20/ipc/glue/GeckoChildProcessHost.h mozilla-release/ipc/glue/GeckoChildProcessHost.h
--- 20/ipc/glue/GeckoChildProcessHost.h	Wed Mar 27 06:17:46 2013
+++ mozilla-release/ipc/glue/GeckoChildProcessHost.h	Sat Apr  6 23:42:55 2013
@@ -34,7 +34,11 @@
 
   ~GeckoChildProcessHost();
 
+#if defined(XP_WIN)
+  static nsresult GetArchitecturesForBinary(const wchar_t *path, uint32_t *result);
+#else
   static nsresult GetArchitecturesForBinary(const char *path, uint32_t *result);
+#endif
 
   static uint32_t GetSupportedArchitecturesForProcessType(GeckoProcessType type);
 
diff -ruNa 20/ipc/glue/Makefile.in mozilla-release/ipc/glue/Makefile.in
--- 20/ipc/glue/Makefile.in	Wed Mar 27 06:17:46 2013
+++ mozilla-release/ipc/glue/Makefile.in	Sat Apr  6 23:43:50 2013
@@ -114,6 +114,9 @@
 include $(topsrcdir)/ipc/app/defs.mk
 DEFINES += -DMOZ_CHILD_PROCESS_NAME=\"$(MOZ_CHILD_PROCESS_NAME)\"
 DEFINES += -DMOZ_CHILD_PROCESS_BUNDLE=\"$(MOZ_CHILD_PROCESS_BUNDLE)\"
+ifeq ($(OS_ARCH),WINNT)
+DEFINES += -DMOZ_APP_DISPLAYNAME=\"$(MOZ_APP_DISPLAYNAME)\"
+endif
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
diff -ruNa 20/modules/libpref/src/init/all.js mozilla-release/modules/libpref/src/init/all.js
--- 20/modules/libpref/src/init/all.js	Wed Mar 27 06:18:00 2013
+++ mozilla-release/modules/libpref/src/init/all.js	Sat Apr  6 23:44:58 2013
@@ -1785,6 +1785,13 @@
 
 pref("dom.ipc.processCount", 1);
 
+#ifdef XP_WIN
+#ifdef HAVE_64BIT_OS
+// Win64 supports 32bit plugins via IPC
+pref("dom.ipc.plugins.i386", true);
+#endif
+#endif
+
 pref("svg.smil.enabled", true);
 
 // Enable the use of display-lists for SVG hit-testing and painting.
http://pcxfirefox.wordpress.com/
上一页 下一页
游客

返回顶部